Найти удаленное число
-
- Новичок
- Сообщения: 88
- Зарегистрирован: Вс сен 05, 1999 4:01 am
- Откуда: CA, USA
Найти удаленное число
Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
Подсказка - как это можно было бы ЗАПРОГРАММИРОВАТЬ?
[ 27-12-2001: Message edited by: wanderer ]</p>
Подсказка - как это можно было бы ЗАПРОГРАММИРОВАТЬ?
[ 27-12-2001: Message edited by: wanderer ]</p>
-
- Уже с Приветом
- Сообщения: 577
- Зарегистрирован: Чт окт 19, 2000 4:01 am
- Откуда: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA
- Контактная информация:
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">:</font><hr>Originally posted by wanderer:
<strong>Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
методом деления пополам? [img:bd4ba1b278]images/smiles/icon_confused.gif[/img:bd4ba1b278]
<strong>Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
методом деления пополам? [img:bd4ba1b278]images/smiles/icon_confused.gif[/img:bd4ba1b278]
-
- Уже с Приветом
- Сообщения: 577
- Зарегистрирован: Чт окт 19, 2000 4:01 am
- Откуда: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA
- Контактная информация:
Найти удаленное число
а если массив Y после удаления элемента еще и перемешали, то получается линейная сложность, если допустить, что мы можем использовать кусок памяти размером MAX(X) [img:3d70f54aed]images/smiles/icon_wink.gif[/img:3d70f54aed]
- Kisena
- Уже с Приветом
- Сообщения: 1615
- Зарегистрирован: Чт июл 12, 2001 4:01 am
- Откуда: Raleigh, NC
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Andy77:
<strong><blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">:</font><hr>Originally posted by wanderer:
[qb]Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
методом деления пополам? [img:fbe19d8891]images/smiles/icon_confused.gif[/img:fbe19d8891] [/QB]<hr></blockquote>
Если в массиве одно и то же число может появляться несколько раз, то не очень понятно, как реализовывать метод деления пополам.
<strong><blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">:</font><hr>Originally posted by wanderer:
[qb]Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
методом деления пополам? [img:fbe19d8891]images/smiles/icon_confused.gif[/img:fbe19d8891] [/QB]<hr></blockquote>
Если в массиве одно и то же число может появляться несколько раз, то не очень понятно, как реализовывать метод деления пополам.
-
- Уже с Приветом
- Сообщения: 577
- Зарегистрирован: Чт окт 19, 2000 4:01 am
- Откуда: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA
- Контактная информация:
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Kisena:
<strong>
Если в массиве одно и то же число может появляться несколько раз, то не очень понятно, как реализовывать метод деления пополам.</strong><hr></blockquote>
точно так же как и в случае с уникальными числами... делим отрезок пополам, пока не наткнемся на
[b:8930d7f0db]n : X[n]!=Y[n]&& X[n-1]==Y[n-1][/b:8930d7f0db]
[ 27-12-2001: Message edited by: Andy77 ]</p>
<strong>
Если в массиве одно и то же число может появляться несколько раз, то не очень понятно, как реализовывать метод деления пополам.</strong><hr></blockquote>
точно так же как и в случае с уникальными числами... делим отрезок пополам, пока не наткнемся на
[b:8930d7f0db]n : X[n]!=Y[n]&& X[n-1]==Y[n-1][/b:8930d7f0db]
[ 27-12-2001: Message edited by: Andy77 ]</p>
-
- Уже с Приветом
- Сообщения: 242
- Зарегистрирован: Пн янв 03, 2000 4:01 am
- Откуда: TX > MA/NH > NJ/NYC
- Контактная информация:
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Andy77:
<strong>а если массив Y после удаления элемента еще и перемешали, то получается линейная сложность, если допустить, что мы можем использовать кусок памяти размером MAX(X) [img:2f0bbdded9]images/smiles/icon_wink.gif[/img:2f0bbdded9] </strong><hr></blockquote>
наверное, это и имелось в виду. в остальных случаях проще найти число _вместе_ с его индексом.
wanderer?
<strong>а если массив Y после удаления элемента еще и перемешали, то получается линейная сложность, если допустить, что мы можем использовать кусок памяти размером MAX(X) [img:2f0bbdded9]images/smiles/icon_wink.gif[/img:2f0bbdded9] </strong><hr></blockquote>
наверное, это и имелось в виду. в остальных случаях проще найти число _вместе_ с его индексом.
wanderer?
-
- Новичок
- Сообщения: 88
- Зарегистрирован: Вс сен 05, 1999 4:01 am
- Откуда: CA, USA
Найти удаленное число
Поскольку не сказано что числа все разные, то ... хмм ... они могут быть одинаковы. Поэтому, вопрос о положении удаленного элемента в общем случае неразрешим. Ну разве что попросить положение КАКОГО НИБУДЬ элемента с тем же значением. Но и этого не спрашивается. Все что спрашивается, это какое ЧИСЛО было удалено, где бы оно не находилось.
Также, элементы второго массива не обязанны быть расположенными в том же порядке. Извиняюсь если из условия это было не очень ясно.
[ 27-12-2001: Message edited by: wanderer ]</p>
Также, элементы второго массива не обязанны быть расположенными в том же порядке. Извиняюсь если из условия это было не очень ясно.
[ 27-12-2001: Message edited by: wanderer ]</p>
-
- Уже с Приветом
- Сообщения: 577
- Зарегистрирован: Чт окт 19, 2000 4:01 am
- Откуда: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA
- Контактная информация:
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by wanderer:
<strong>Поскольку не сказано что числа все разные, то ... хмм ... они могут быть одинаковы. Поэтому, вопрос о положении удаленного элемента в общем случае неразрешим. Ну разве что попросить положение КАКОГО НИБУДЬ элемента с тем же значением. Но и этого не спрашивается. Все что спрашивается, это какое ЧИСЛО было удалено, где бы оно не находилось.
Также, элементы второго массива не обязанны быть расположенными в том же порядке. Извиняюсь если из условия это было не очень ясно.
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
Тогда считаем суммы первого и второго массива - сойдёт?
<strong>Поскольку не сказано что числа все разные, то ... хмм ... они могут быть одинаковы. Поэтому, вопрос о положении удаленного элемента в общем случае неразрешим. Ну разве что попросить положение КАКОГО НИБУДЬ элемента с тем же значением. Но и этого не спрашивается. Все что спрашивается, это какое ЧИСЛО было удалено, где бы оно не находилось.
Также, элементы второго массива не обязанны быть расположенными в том же порядке. Извиняюсь если из условия это было не очень ясно.
[ 27-12-2001: Message edited by: wanderer ]</strong><hr></blockquote>
Тогда считаем суммы первого и второго массива - сойдёт?
- Chapaev
- Новичок
- Сообщения: 96
- Зарегистрирован: Вт июн 19, 2001 4:01 am
- Откуда: Canada
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by wanderer:
<strong>Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
Подсказка - как это можно было бы ЗАПРОГРАММИРОВАТЬ?</strong><hr></blockquote>
Я бы отсортировал оба массива X и Y функцией qsort. А затем
for(int i=0; i<N-1; i++)
if(X[i] != Y[i])
return X[i];
return X[N-1];
<strong>Дан массив X[N] несортированных целых чисел. Второй массив Y[N-1] получен удалением из X одного числа. Определить удаленное число (но не обязательно его положение в массиве X) наибыстрым образом.
Подсказка - как это можно было бы ЗАПРОГРАММИРОВАТЬ?</strong><hr></blockquote>
Я бы отсортировал оба массива X и Y функцией qsort. А затем
for(int i=0; i<N-1; i++)
if(X[i] != Y[i])
return X[i];
return X[N-1];
- Chapaev
- Новичок
- Сообщения: 96
- Зарегистрирован: Вт июн 19, 2001 4:01 am
- Откуда: Canada
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Andy77:
<strong>
Тогда считаем суммы первого и второго массива - сойдёт?</strong><hr></blockquote>
Просто и красиво!
<strong>
Тогда считаем суммы первого и второго массива - сойдёт?</strong><hr></blockquote>
Просто и красиво!
-
- Уже с Приветом
- Сообщения: 242
- Зарегистрирован: Пн янв 03, 2000 4:01 am
- Откуда: TX > MA/NH > NJ/NYC
- Контактная информация:
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Chapaev:
<strong>
Я бы отсортировал оба массива X и Y функцией qsort. А затем...</strong><hr></blockquote>
сложность у quicksort'а (что нас в этой задаче и заботит) N * log(N) - больше чем линейная.
<strong>
Я бы отсортировал оба массива X и Y функцией qsort. А затем...</strong><hr></blockquote>
сложность у quicksort'а (что нас в этой задаче и заботит) N * log(N) - больше чем линейная.
-
- Новичок
- Сообщения: 88
- Зарегистрирован: Вс сен 05, 1999 4:01 am
- Откуда: CA, USA
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by Andy77:
<strong>
Тогда считаем суммы первого и второго массива - сойдёт?</strong><hr></blockquote>
Для математика сойдет вполне [img:430f246ab8]images/smiles/icon_smile.gif[/img:430f246ab8] И действительно, просто и красиво.
Теперь для программистов: предположим, что мы используем такой тип целых чисел, что любая операция сложения или вычитания может вызвать переполнение [img:430f246ab8]images/smiles/icon_sad.gif[/img:430f246ab8]
Тогда как ?
<strong>
Тогда считаем суммы первого и второго массива - сойдёт?</strong><hr></blockquote>
Для математика сойдет вполне [img:430f246ab8]images/smiles/icon_smile.gif[/img:430f246ab8] И действительно, просто и красиво.
Теперь для программистов: предположим, что мы используем такой тип целых чисел, что любая операция сложения или вычитания может вызвать переполнение [img:430f246ab8]images/smiles/icon_sad.gif[/img:430f246ab8]
Тогда как ?
- Kisena
- Уже с Приветом
- Сообщения: 1615
- Зарегистрирован: Чт июл 12, 2001 4:01 am
- Откуда: Raleigh, NC
Найти удаленное число
А сравнивать можно? Насколько мы помним, сравнение двух чисел производится путем сравнения их разницы с нулем. Или теперь так не делают? Или никогда так не делали?
-
- Уже с Приветом
- Сообщения: 242
- Зарегистрирован: Пн янв 03, 2000 4:01 am
- Откуда: TX > MA/NH > NJ/NYC
- Контактная информация:
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by wanderer:
<strong>Теперь для программистов: предположим, что мы используем такой тип целых чисел, что любая операция сложения или вычитания может вызвать переполнение [img:45b8d2a598]images/smiles/icon_sad.gif[/img:45b8d2a598]
Тогда как ?</strong><hr></blockquote>
недобрый Вы, Wanderer [img:45b8d2a598]images/smiles/icon_sad.gif[/img:45b8d2a598] [img:45b8d2a598]images/smiles/icon_mad.gif[/img:45b8d2a598] [img:45b8d2a598]images/smiles/icon_wink.gif[/img:45b8d2a598]
XOR!
[ 27-12-2001: Message edited by: Drom ]</p>
<strong>Теперь для программистов: предположим, что мы используем такой тип целых чисел, что любая операция сложения или вычитания может вызвать переполнение [img:45b8d2a598]images/smiles/icon_sad.gif[/img:45b8d2a598]
Тогда как ?</strong><hr></blockquote>
недобрый Вы, Wanderer [img:45b8d2a598]images/smiles/icon_sad.gif[/img:45b8d2a598] [img:45b8d2a598]images/smiles/icon_mad.gif[/img:45b8d2a598] [img:45b8d2a598]images/smiles/icon_wink.gif[/img:45b8d2a598]
XOR!
[ 27-12-2001: Message edited by: Drom ]</p>
- sttranik
- Уже с Приветом
- Сообщения: 753
- Зарегистрирован: Пн сен 18, 2000 4:01 am
- Откуда: Fremont, CA
- Контактная информация:
Найти удаленное число
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by wanderer:
<strong>Для математика сойдет вполне [img:06aa4e0c2d]images/smiles/icon_smile.gif[/img:06aa4e0c2d] И действительно, просто и красиво.
Теперь для программистов: предположим, что мы используем такой тип целых чисел, что любая операция сложения или вычитания может вызвать переполнение [img:06aa4e0c2d]images/smiles/icon_sad.gif[/img:06aa4e0c2d]
Тогда как ?</strong><hr></blockquote>
сложение в поле ? то что по программистки называется wrap around ?
теперь давайте усложним задачу. скажем что во втором массиве меньше не на одно а на два числа. как найти эти два числа?
PS. Между прочим мне эту задачу задавали на интервью [img:06aa4e0c2d]images/smiles/icon_smile.gif[/img:06aa4e0c2d]
<strong>Для математика сойдет вполне [img:06aa4e0c2d]images/smiles/icon_smile.gif[/img:06aa4e0c2d] И действительно, просто и красиво.
Теперь для программистов: предположим, что мы используем такой тип целых чисел, что любая операция сложения или вычитания может вызвать переполнение [img:06aa4e0c2d]images/smiles/icon_sad.gif[/img:06aa4e0c2d]
Тогда как ?</strong><hr></blockquote>
сложение в поле ? то что по программистки называется wrap around ?
теперь давайте усложним задачу. скажем что во втором массиве меньше не на одно а на два числа. как найти эти два числа?
PS. Между прочим мне эту задачу задавали на интервью [img:06aa4e0c2d]images/smiles/icon_smile.gif[/img:06aa4e0c2d]