powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / задачка
25 сообщений из 35, страница 1 из 2
задачка
    #36979939
truel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, всем!

Есть задачка:

Есть список номеров угнанных машин по городу и есть список номеров машин за сегодня, которые проехали по городу. Нужно получить список номеров уганных машин, которые проехали по городу за сегодня. Нужно найти алгоритм, при этом он должен быть линейной сложности(не должно быть вложенных циклов).

Есть идеи?

Заранее спасибо.
...
Рейтинг: 0 / 0
задачка
    #36979984
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
truel,

а номера какого вида? обычные российские?
...
Рейтинг: 0 / 0
задачка
    #36979995
GSerg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меча номера какого вида? обычные российские?
Дык не пофигу ли? Сравнение на тупое равенство наверняка.

Афтар, видимо, интересуется только цикловой строной вопроса.
Оба списка сортируются, потом одновременный односторонний проход по обоим.

Merge join , иными словами.
...
Рейтинг: 0 / 0
задачка
    #36980003
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GSergОба списка сортируются , потом одновременный односторонний проход по обоим.Требуется линейная сложность.
...
Рейтинг: 0 / 0
задачка
    #36980016
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечGSergОба списка сортируются , потом одновременный односторонний проход по обоим.Требуется линейная сложность.
Тогда отсортированность списков вменяем в исходные условия ))) А то об этом же ни слова. Кто сказал, что они не отсортированы изначально? )))
...
Рейтинг: 0 / 0
задачка
    #36980021
GSerg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечТребуется линейная сложность.
Да, но ввиду уточняющей фразы автора "не должно быть вложенных циклов" мне представляется, что автор, не до конца разбираясь в тонкостях момента, имел в виду "не N^2", а не "обязательно N".

Также представляется маловероятным, чтобы гарантированно O(N)-ный алгоритм соединения существовал вообще. Иначе почему он не используется в современных СУБД?
...
Рейтинг: 0 / 0
задачка
    #36980044
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GSergТакже представляется маловероятным, чтобы гарантированно O(N)-ный алгоритм соединения существовал вообще. Иначе почему он не используется в современных СУБД?В общем виде нет.
Однако номера можно закодировать целыми числами, после чего искать подходы, как, например, здесь
...
Рейтинг: 0 / 0
задачка
    #36980066
truel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GSergЯростный МечТребуется линейная сложность.
Да, но ввиду уточняющей фразы автора "не должно быть вложенных циклов" мне представляется, что автор, не до конца разбираясь в тонкостях момента, имел в виду "не N^2", а не "обязательно N".

Вопрос был с собеседования, насколько помню требовалось найти именно линейную сложность. Списки неотсортированы. Поэтому Merge join, как я понимаю, не годится, т.к. нету алгоритма сортировки с сложностью менее n*log(n).
...
Рейтинг: 0 / 0
задачка
    #36980072
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечGSergТакже представляется маловероятным, чтобы гарантированно O(N)-ный алгоритм соединения существовал вообще. Иначе почему он не используется в современных СУБД?В общем виде нет.
Однако номера можно закодировать целыми числами, после чего искать подходы, как, например, здесь
Там задачка "немного" другая.

А тут - есть массивы (пусть с целыми числами - это абсолютно ничего не даст):

[5, 6, 1, 10, 3, 4, 19]
[32, 2, 4, 8, 1, 11, 7, 13]

Ну как ты в один проход линейно найдешь пересечение этих двух массивов? Никак.
Только если они изначально упорядочены.
...
Рейтинг: 0 / 0
задачка
    #36980076
truel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечGSergТакже представляется маловероятным, чтобы гарантированно O(N)-ный алгоритм соединения существовал вообще. Иначе почему он не используется в современных СУБД?В общем виде нет.
Однако номера можно закодировать целыми числами, после чего искать подходы, как, например, здесь

Почитал, но непонятно, как применить тот подход. В той задачке в качестве элементов массива использовались простые числа, здесь же набор из букв и цифр, поэтому простой суммой не обойтись.
...
Рейтинг: 0 / 0
задачка
    #36980094
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
truelПочитал, но непонятно, как применить тот подход. В той задачке в качестве элементов массива использовались простые числа, здесь же набор из букв и цифр, поэтому простой суммой не обойтись.
Замени набор букв и цифр на числа. Это поможет? Нет.
...
Рейтинг: 0 / 0
задачка
    #36980105
truel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragontruelПочитал, но непонятно, как применить тот подход. В той задачке в качестве элементов массива использовались простые числа, здесь же набор из букв и цифр, поэтому простой суммой не обойтись.
Замени набор букв и цифр на числа. Это поможет? Нет.
Не понимаю, как это может помочь. Пусть будет алгоритм кодирования номера в число и обратный алгоритм декодирования, и мы имеем тогда дело только с числами.

В том примере нужно было только один выкинутый номер, а здесь не просто номер, а серию номеров.
...
Рейтинг: 0 / 0
задачка
    #36980125
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
truelНе понимаю, как это может помочь. Пусть будет алгоритм кодирования номера в число и обратный алгоритм декодирования, и мы имеем тогда дело только с числами.

В том примере нужно было только один выкинутый номер, а здесь не просто номер, а серию номеров.
Так я так и сказал - НЕ поможет.
Можно забыть о той задаче и не мусолить ее в мозгу.
...
Рейтинг: 0 / 0
задачка
    #36980142
truel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли задачу решить так:

1. хэшируем 1 массив всех номеров города.
2. ищем каждый элемент 2 массива в хэш-таблице 1 массива.

Сложность по теории получается, поправьте, если не прав, то O(n*ln(n)).
...
Рейтинг: 0 / 0
задачка
    #36980150
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
truelМожно ли задачу решить так:

1. хэшируем 1 массив всех номеров города.
2. ищем каждый элемент 2 массива в хэш-таблице 1 массива.

Сложность по теории получается, поправьте, если не прав, то O(n*ln(n)).в принципе так можно и за линейное время уложиться, но для этого надо хэш примерно на 35937000 персон. Что там с ограничением по памяти? Да и предварительно обнулить элементы придется...
...
Рейтинг: 0 / 0
задачка
    #36980153
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя нет, многовато. 4492125 байт понадобится.
...
Рейтинг: 0 / 0
задачка
    #36980159
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
truelМожно ли задачу решить так:

1. хэшируем 1 массив всех номеров города.
2. ищем каждый элемент 2 массива в хэш-таблице 1 массива.

Сложность по теории получается, поправьте, если не прав, то O(n*ln(n)).
Тогда фраза "не должно быть вложенных циклов" отпадает.

Цикл по второму массиву
{
Цикл-поиск в таблице хешей
}
...
Рейтинг: 0 / 0
задачка
    #36980332
tempestadept
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Яростный Меч,

В автомобильных номерах используются далеко не все буквы кириллицы, так что возможных номеров меньше. С
другой стороны, есть ещё код региона...
А необходимость обнулять табличку добавляет константное время и не влияет на асимптотику, так что требования формально соблюдены.
...
Рейтинг: 0 / 0
задачка
    #36980336
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
select можно использовать?
...
Рейтинг: 0 / 0
задачка
    #36980406
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
две таблички, индексы, джойн :)
...
Рейтинг: 0 / 0
задачка
    #36980506
Фотография apxutektop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечGSergОба списка сортируются , потом одновременный односторонний проход по обоим.Требуется линейная сложность.

А в этом случае какова сложность будет? Разве не N?
...
Рейтинг: 0 / 0
задачка
    #36980536
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, вы чего?
Поскольку ограничения на ресурсы не указано, задача решается элементарно - составлением матрицы (решета).
Edd.Dragon и ЯрМеч были правы, смысл примерно таков и есть.
Давайте посчитаем ( http://gibdd.net/codes.html) - на данный момент мы имеем всего 10*10*10*12*12*12*122=210816000 федеральных автономеров. Для их запоминания (есть-нет) достаточно массива (матрицы) объемом 26352000 байт (т.е. всего ~25 МБайт). Даже с учетом номеров спецтранспорта и т.п. возрастает он ненамного. Таким образом, алгоритм прост:
- описываем функцию, позволяющие сопоставить конкретный номер с его местом в матрице
- инициализируем матрицу
- проходим 1 раз по массиву "проехавших авто" и отмечаем их в матрице
- проходим 1 раз по массиву "угнанных авто", преобразуем номер в место и сверяем с матрицей, в случае совпадения - запоминаем.
Усё...
...
Рейтинг: 0 / 0
задачка
    #36980615
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,
А составление матрицы какую сложность имеет?
...
Рейтинг: 0 / 0
задачка
    #36980617
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonAndreTM,
А составление матрицы какую сложность имеет?
Никакую. Поскольку заранее создаём массив нужного размера. Простое выделение памяти...
...
Рейтинг: 0 / 0
задачка
    #36980619
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, выдайте мне, например, сотню тысяч номеров машин и тысячу номеров "угнанных".
В любом табличном виде.
А я вам отвечу вышеописанным алгоритмом...
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / задачка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]