|
|
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Добрый день! Одним глазком просмотрел пример теста, одно из заданий: есть 3 массива размером n, p, q. Требуется найти элемент который есть в трех массивах за O(n+p+q) Я думаю это примерно так: Код: java 1. 2. 3. 4. 5. Правильно сделать так? Есть ли еще решения? xXx_жава жуниор_xXx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2014, 23:30 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
офф: дойче банк это... ну как бы помягче :) странные они люди))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 11:33 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
no56892Правильно сделать так? Да: http://stackoverflow.com/a/8923300 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 11:41 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
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 и нет коллизий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 13:00 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевПростите как же да, если getEntry (и containsKey соответственно) это O(n) (в худшем случае). А почему обязательно "худший случай рассматривать". При нормальной реализации hashCode - O(1) о чем и заявлено в JavaDoc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 13:08 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
BlazkowiczСергей АрсеньевПростите как же да, если getEntry (и containsKey соответственно) это O(n) (в худшем случае). А почему обязательно "худший случай рассматривать". При нормальной реализации hashCode - O(1) о чем и заявлено в JavaDoc. Ну на заборе тоже пишут. От Код: java 1. Никуда не уйти. А в академичиских задачах рассматривают именно худший случай. Ибо "наиболее часто встречающийся случай" всего лишь зависит от выборки, а никак не от генеральной совокупности. Подгонка hash функции под отсутствие коллизий съест свою сложность. P.S. Принцип то конечно тот же, но задача решается несколько проще например для 32 int достаточно гигабайтика оперативочки и трех пробежек по массивам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 13:18 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев А в академичиских задачах рассматривают именно худший случай. Это тоже на заборе написано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 13:26 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
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), а если не сделаем то может проскочит, а может и нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 13:55 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Можно с исходной задачей поступить проще: случай 1: размер минимум 2 массивов равен 1 - тогда задача сводится к проходу по третьему массиву и получаем линейную сложность. случай 2: один из массивов пуст - задача решается за константное время. случай 3: 2 и более массивов размером больше 1, все 3 не пустые - решения с линейной сложностью нет, о чем можно радостно скинуть исключение. Может это и не тот ответ, который хотели там увидеть, зато точный (или я что-то пропустил и задача и правда решаема не только для вырожденных случаев). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 14:21 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевА в академичиских задачах рассматривают именно худший случай. Не, бывает - ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 14:39 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Alexey TominНо в JDK8 починили :) Об этом много писали год-два назад. JEE контейнеры массово апдейты выпускли тогда для этой дыры. И по-моему должны были раньше чем в JDK8 починить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 15:00 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAlexey TominНо в JDK8 починили :) Об этом много писали год-два назад. JEE контейнеры массово апдейты выпускли тогда для этой дыры. И по-моему должны были раньше чем в JDK8 починить. Починили в 8ке, по т.к. это security, то в 7ку включили (просто Сергей 7ку не видит давно). 6ка- всё... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 15:20 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Alexey TominПочинили в 8ке, по т.к. это security, то в 7ку включили (просто Сергей 7ку не видит давно). 6ка- всё... Г.м. кто просвятит каким алгоритмом можно "построить бинарное дерево" (см выше названный ютюб в вышеназванное время) за O(1)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 15:57 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев Г.м. кто просвятит каким алгоритмом можно "построить бинарное дерево" (см выше названный ютюб в вышеназванное время) за O(1)? Не понял вопроса. Бинарное дерево строится внутри бакета, если размер бакета привышает определенное значения. Как я понял, только для Comparable ключей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 16:13 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевAlexey TominПочинили в 8ке, по т.к. это security, то в 7ку включили (просто Сергей 7ку не видит давно). 6ка- всё... Г.м. кто просвятит каким алгоритмом можно "построить бинарное дерево" (см выше названный ютюб в вышеназванное время) за O(1)? Бинарное дерево строится в "корзине". Под O(1) подразумевается время доступа по ключу, при том что ключ реализует адекватный hashCode() и в бакете находится минимум элементов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 16:17 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевAlexey TominПочинили в 8ке, по т.к. это security, то в 7ку включили (просто Сергей 7ку не видит давно). 6ка- всё... Г.м. кто просвятит каким алгоритмом можно "построить бинарное дерево" (см выше названный ютюб в вышеназванное время) за O(1)? А там не 0(1) будет. Это для случая, когда с хэшем беда, и надо не свалится в полные тормоза. Т.е. будет хуже, чем если коллизий нет, но много лучше, чем если вместо двоичного дерева- обычный список. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 16:54 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Alexey TominСергей Арсеньевпропущено... Г.м. кто просвятит каким алгоритмом можно "построить бинарное дерево" (см выше названный ютюб в вышеназванное время) за O(1)? А там не 0(1) будет. Это для случая, когда с хэшем беда, и надо не свалится в полные тормоза. Т.е. будет хуже, чем если коллизий нет, но много лучше, чем если вместо двоичного дерева- обычный список. И да, считается скорость не построения, а чтения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 16:55 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
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). В оригинале задания массивы отсортированы вообще-то, поэтому и без доп. памяти можно обойтись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 23:37 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
chebaaagh, Тю, ну в такой постановке задача решается за линейное время вообще без каких-либо структур данных, на десятке локальных переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 00:16 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за ответы, а по поводу как с делать O(n+p+q) и в худшем случае - это подойдет только для целых чисел размером <= int, хотя дыже с long такое не получится (для отрицательных long не прокатит array[abs(element)+CONST_MAX_INT]), а для всего остального - только в той или иной степени хэш. chebaaagh, а у Вас нет случайно еще оттуда заданий, а то там был примерный вариант - но сейчас ссылка не открывается, может из прошлых лет и т.д. Буду очень признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2014, 14:07 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
no56892Всем спасибо за ответы, а по поводу как с делать O(n+p+q) и в худшем случае - это подойдет только для целых чисел размером <= int Теоретически для чего угодно (что может быть выражено фиксированным количеством бит) за четверть адресуемой этим количеством бит памяти (за исключением очень маленьких - так для массивов boolean нужно 4 бита). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2014, 14:46 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
no56892, вариантов нет, но учебников с подобными задачами известно уже уйма. Смотрите того же Шеня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2014, 15:13 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
История давних лет конечно, но может есть помните несколько заданий с самого письменного теста в банке?)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2017, 19:30 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
ахаха, читаю такой тему, думаю про себя "опять этот дойче банк, вот правильно первый коммент к теме написан", думаю такой, сошлюсь-ка я на него сейчас, потом прокрутил вверх автора глянуть и был слегка удивлен :)) мнение, кстати, с тех пор про банки в целом не изменилось :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2017, 21:50 |
|
||
|
задание дойче банк
|
|||
|---|---|---|---|
|
#18+
Nixicахаха, читаю такой тему, думаю про себя "опять этот дойче банк, вот правильно первый коммент к теме написан", думаю такой, сошлюсь-ка я на него сейчас, потом прокрутил вверх автора глянуть и был слегка удивлен :)) мнение, кстати, с тех пор про банки в целом не изменилось :) День сурка :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2017, 17:27 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38728047&tid=2123136]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 385ms |

| 0 / 0 |
