|
|
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
Есть два ArrayList одинакового размера list1(1,2,3) и list2(4,5,6). нужно записать в list1 эл-ты двух листов , которые идут последовательно [1,4,2,5,3,6]. Причем нужна высокая эффективность алгоритма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 20:17 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
начинай. потом запости сюда свое решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 21:29 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 21:54 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
эффективность алгоритма O(n) нужна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 23:13 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
mightyducksfanЕсть два ArrayList одинакового размера list1(1,2,3) и list2(4,5,6). нужно записать в list1 эл-ты двух листов , которые идут последовательно [1,4,2,5,3,6]. Причем нужна высокая эффективность алгоритма. Указав реализацию ArrayList ты искусственно ограничил нас в алгоритмах. Это печально. Но если отойти от реализации и если договориться что один из списков - read-only то на базе связного списка (CustomLinkedList) можно сделать эту операцию за фиксированное время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 23:37 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
У меня в задаче были именно Arraylist. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 09:11 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
mightyducksfanэффективность алгоритма O(n) нужна А у вас какая получилась? Для пущей эффективности можно capacity задать, так как ожидаемый размер известен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 09:17 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
mightyducksfan, Не каждый list одни и те же операции позволяет сделать за O(n) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 12:03 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, Но с ArrayList все просто. Новый размером как два старых и последовательно из каждого в новый. Подмену старого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 12:04 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. т.е. эффективность этого алгоритма O(n) ? Может кто-нибудь объяснить почему эффективность равна O(n)? мы ведь пробегаем по всем элементам n и при добавлении тоже эл-ты сдвигаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 12:53 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
mightyducksfanи при добавлении тоже эл-ты сдвигаются Зачем они сдвигаются, если добавлять в конец? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 13:01 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
Blazkowiczmightyducksfanи при добавлении тоже эл-ты сдвигаются Зачем они сдвигаются, если добавлять в конец? Аа, тьху. Понял. Так это. А 3й массив принципиально нельзя заводить? В этом вся соль задачи или что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 13:03 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
mightyducksfan, Идея проста до нельзя. Добавляем 1й массив сам в себя. Затем читаем его с середины, а пишем с начала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 13:10 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
Можно было-бы создать Код: java 1. 2. но действующее ограничение на ArrayList всё портит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 14:15 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
да я упустил.. это перемешивание должно быть в методе, который возвращает void . И получается 3 массив мы уже не заведем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 14:26 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
mightyducksfanда я упустил.. это перемешивание должно быть в методе, который возвращает void . И получается 3 массив мы уже не заведем Почему нет? Локальной переменной, с последующим копированием в один из оригиналов. Мы всё равно останемся в O(n) с фиксированым числом проходов по длине массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 14:31 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
mightyducksfan, Тебе же написали как использовать сам Список как третий - за счет добавления самого себя. Можно и просто увеличить размер и идти с конца (середины). Но за такое на экзамене 5 не поставят. :) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 15:16 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
Вот такой есть вариант: import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class TestOne { public static void main(String[] args) { List<Long> oneList = new ArrayList<Long>(); List<Long> twoList = new ArrayList<Long>(); List<Long> includeList = new ArrayList<Long>(); oneList.add(1L); oneList.add(2L); oneList.add(3L); twoList.add(4L); twoList.add(5L); twoList.add(6L); Iterator<Long> iter = oneList.iterator(); while(iter.hasNext()) { Long tmp = iter.next(); includeList.add(tmp); iter.remove(); Iterator<Long> iter2 = twoList.iterator(); while(iter2.hasNext()) { Long tmp2 = iter2.next(); includeList.add(tmp2); iter2.remove(); break; } } System.out.println("========>"+includeList.toString()); } } Результат ========>[1, 4, 2, 5, 3, 6] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 22:19 |
|
||
|
небольшой вопрос с коллекциями
|
|||
|---|---|---|---|
|
#18+
Роман_мск77Вот такой есть вариант: import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class TestOne { public static void main(String[] args) { List<Long> oneList = new ArrayList<Long>(); List<Long> twoList = new ArrayList<Long>(); List<Long> includeList = new ArrayList<Long>(); oneList.add(1L); oneList.add(2L); oneList.add(3L); twoList.add(4L); twoList.add(5L); twoList.add(6L); Iterator<Long> iter = oneList.iterator(); while(iter.hasNext()) { Long tmp = iter.next(); includeList.add(tmp); iter.remove(); Iterator<Long> iter2 = twoList.iterator(); while(iter2.hasNext()) { Long tmp2 = iter2.next(); includeList.add(tmp2); iter2.remove(); break; } } System.out.println("========>"+includeList.toString()); } } Результат ========>[1, 4, 2, 5, 3, 6] так эффективность алгоримта будет O(n*n) . нужна O(n) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2015, 20:04 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39112019&tid=2124630]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 512ms |

| 0 / 0 |
