powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / задание дойче банк
25 сообщений из 33, страница 1 из 2
задание дойче банк
    #38727697
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Одним глазком просмотрел пример теста, одно из заданий: есть 3 массива размером n, p, q. Требуется найти элемент который есть в трех массивах за O(n+p+q)
Я думаю это примерно так:
Код: java
1.
2.
3.
4.
5.
Map map1 = new HashMap();
Map map2 = new HashMap();
for(int element : ArrayN) map1.add(element);
for(int element : ArrayP) if(map1.contains(element)) map2.add(element);
for(int element : ArrayQ) if(map2.contains(element)) return element;


Правильно сделать так? Есть ли еще решения?


xXx_жава жуниор_xXx
...
Рейтинг: 0 / 0
задание дойче банк
    #38727936
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
офф: дойче банк это... ну как бы помягче :)
странные они люди)))
...
Рейтинг: 0 / 0
задание дойче банк
    #38727951
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892Правильно сделать так?
Да: http://stackoverflow.com/a/8923300
...
Рейтинг: 0 / 0
задание дойче банк
    #38728026
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczno56892Правильно сделать так?
Да: http://stackoverflow.com/a/8923300
Простите как же да, если getEntry (и containsKey соответственно) это O(n) (в худшем случае).
Другими словами
for(int element : ArrayP) if(map1.contains(element)) map2.add(element);
Это O(n*p).
А O(n+p) это может быть только при условии, что количество корзин в hashmap больше n и p и нет коллизий.
...
Рейтинг: 0 / 0
задание дойче банк
    #38728030
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевПростите как же да, если getEntry (и containsKey соответственно) это O(n) (в худшем случае).

А почему обязательно "худший случай рассматривать". При нормальной реализации hashCode - O(1) о чем и заявлено в JavaDoc.
...
Рейтинг: 0 / 0
задание дойче банк
    #38728037
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСергей АрсеньевПростите как же да, если getEntry (и containsKey соответственно) это O(n) (в худшем случае).

А почему обязательно "худший случай рассматривать". При нормальной реализации hashCode - O(1) о чем и заявлено в JavaDoc.

Ну на заборе тоже пишут. От
Код: java
1.
for (Entry<K,V> e = table[indexFor(hash, table.length)];


Никуда не уйти.

А в академичиских задачах рассматривают именно худший случай. Ибо "наиболее часто встречающийся случай" всего лишь зависит от выборки, а никак не от генеральной совокупности.
Подгонка hash функции под отсутствие коллизий съест свою сложность.

P.S. Принцип то конечно тот же, но задача решается несколько проще например для 32 int достаточно гигабайтика оперативочки и трех пробежек по массивам.
...
Рейтинг: 0 / 0
задание дойче банк
    #38728047
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев А в академичиских задачах рассматривают именно худший случай.
Это тоже на заборе написано?
...
Рейтинг: 0 / 0
задание дойче банк
    #38728077
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Нет это сокральное знание передают только устно. :)

O(1) там накроется уже на добавлении с rehash. Чтобы обезапастся от него надо установить initial capacity и load factor
http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html If the initial capacity is greater than the maximum number of entries divided by the load factor, no rehash operations will ever occur.
(В нашем случае это проделано небыло)
Но там жеThis implementation provides constant-time performance for the basic operations (get and put), assuming the hash function disperses the elements properly among the buckets. Iteration over collection views requires time proportional to the "capacity" of the HashMap instance (the number of buckets) plus its size (the number of key-value mappings). Thus, it's very important not to set the initial capacity too high (or the load factor too low) if iteration performance is important.
Т.е. если мы сделаем их зависимыми от n то не видать нам O(n), а если не сделаем то может проскочит, а может и нет.
...
Рейтинг: 0 / 0
задание дойче банк
    #38728107
wst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно с исходной задачей поступить проще:
случай 1: размер минимум 2 массивов равен 1 - тогда задача сводится к проходу по третьему массиву и получаем линейную сложность.
случай 2: один из массивов пуст - задача решается за константное время.
случай 3: 2 и более массивов размером больше 1, все 3 не пустые - решения с линейной сложностью нет, о чем можно радостно скинуть исключение.
Может это и не тот ответ, который хотели там увидеть, зато точный (или я что-то пропустил и задача и правда решаема не только для вырожденных случаев).
...
Рейтинг: 0 / 0
задание дойче банк
    #38728131
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевА в академичиских задачах рассматривают именно худший случай.

Не, бывает -
YouTube Video
...
Рейтинг: 0 / 0
задание дойче банк
    #38728156
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominНо в JDK8 починили :)
Об этом много писали год-два назад. JEE контейнеры массово апдейты выпускли тогда для этой дыры. И по-моему должны были раньше чем в JDK8 починить.
...
Рейтинг: 0 / 0
задание дойче банк
    #38728180
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAlexey TominНо в JDK8 починили :)
Об этом много писали год-два назад. JEE контейнеры массово апдейты выпускли тогда для этой дыры. И по-моему должны были раньше чем в JDK8 починить.

Починили в 8ке, по т.к. это security, то в 7ку включили (просто Сергей 7ку не видит давно). 6ка- всё...
...
Рейтинг: 0 / 0
задание дойче банк
    #38728230
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominПочинили в 8ке, по т.к. это security, то в 7ку включили (просто Сергей 7ку не видит давно). 6ка- всё...

Г.м. кто просвятит каким алгоритмом можно "построить бинарное дерево" (см выше названный ютюб в вышеназванное время) за O(1)?
...
Рейтинг: 0 / 0
задание дойче банк
    #38728251
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Г.м. кто просвятит каким алгоритмом можно "построить бинарное дерево" (см выше названный ютюб в вышеназванное время) за O(1)?
Не понял вопроса. Бинарное дерево строится внутри бакета, если размер бакета привышает определенное значения. Как я понял, только для Comparable ключей.
...
Рейтинг: 0 / 0
задание дойче банк
    #38728257
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевAlexey TominПочинили в 8ке, по т.к. это security, то в 7ку включили (просто Сергей 7ку не видит давно). 6ка- всё...

Г.м. кто просвятит каким алгоритмом можно "построить бинарное дерево" (см выше названный ютюб в вышеназванное время) за O(1)?

Бинарное дерево строится в "корзине".
Под O(1) подразумевается время доступа по ключу, при том что ключ реализует адекватный hashCode() и в бакете находится минимум элементов.
...
Рейтинг: 0 / 0
задание дойче банк
    #38728309
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевAlexey TominПочинили в 8ке, по т.к. это security, то в 7ку включили (просто Сергей 7ку не видит давно). 6ка- всё...

Г.м. кто просвятит каким алгоритмом можно "построить бинарное дерево" (см выше названный ютюб в вышеназванное время) за O(1)?

А там не 0(1) будет. Это для случая, когда с хэшем беда, и надо не свалится в полные тормоза. Т.е. будет хуже, чем если коллизий нет, но много лучше, чем если вместо двоичного дерева- обычный список.
...
Рейтинг: 0 / 0
задание дойче банк
    #38728310
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominСергей Арсеньевпропущено...


Г.м. кто просвятит каким алгоритмом можно "построить бинарное дерево" (см выше названный ютюб в вышеназванное время) за O(1)?

А там не 0(1) будет. Это для случая, когда с хэшем беда, и надо не свалится в полные тормоза. Т.е. будет хуже, чем если коллизий нет, но много лучше, чем если вместо двоичного дерева- обычный список.

И да, считается скорость не построения, а чтения.
...
Рейтинг: 0 / 0
задание дойче банк
    #38728554
chebaaagh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
3. Develop a program which solves the following task:
Find one of the numbers which exists in each of three nondecreasing arrays x[p], y[q], z[r].
Algorithm complexity should be O(p+q+r).

В оригинале задания массивы отсортированы вообще-то, поэтому и без доп. памяти можно обойтись
...
Рейтинг: 0 / 0
задание дойче банк
    #38728569
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chebaaagh,
Тю, ну в такой постановке задача решается за линейное время вообще без каких-либо структур данных, на десятке локальных переменных.
...
Рейтинг: 0 / 0
задание дойче банк
    #38730297
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за ответы, а по поводу как с делать O(n+p+q) и в худшем случае - это подойдет только для целых чисел размером <= int, хотя дыже с long такое не получится (для отрицательных long не прокатит array[abs(element)+CONST_MAX_INT]), а для всего остального - только в той или иной степени хэш.

chebaaagh, а у Вас нет случайно еще оттуда заданий, а то там был примерный вариант - но сейчас ссылка не открывается, может из прошлых лет и т.д. Буду очень признателен.
...
Рейтинг: 0 / 0
задание дойче банк
    #38730395
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892Всем спасибо за ответы, а по поводу как с делать O(n+p+q) и в худшем случае - это подойдет только для целых чисел размером <= int
Теоретически для чего угодно (что может быть выражено фиксированным количеством бит) за четверть адресуемой этим количеством бит памяти (за исключением очень маленьких - так для массивов boolean нужно 4 бита).
...
Рейтинг: 0 / 0
задание дойче банк
    #38730462
chebaaagh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
no56892, вариантов нет, но учебников с подобными задачами известно уже уйма. Смотрите того же Шеня
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
задание дойче банк
    #39405233
nocrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
История давних лет конечно, но может есть помните несколько заданий с самого письменного теста в банке?))
...
Рейтинг: 0 / 0
задание дойче банк
    #39405296
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ахаха, читаю такой тему, думаю про себя "опять этот дойче банк, вот правильно первый коммент к теме написан", думаю такой, сошлюсь-ка я на него сейчас, потом прокрутил вверх автора глянуть и был слегка удивлен :)) мнение, кстати, с тех пор про банки в целом не изменилось :)
...
Рейтинг: 0 / 0
задание дойче банк
    #39405985
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixicахаха, читаю такой тему, думаю про себя "опять этот дойче банк, вот правильно первый коммент к теме написан", думаю такой, сошлюсь-ка я на него сейчас, потом прокрутил вверх автора глянуть и был слегка удивлен :)) мнение, кстати, с тех пор про банки в целом не изменилось :)

День сурка :)
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / задание дойче банк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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