Единственный способ, которым я знаю, как это сделать, - это петли вложенности. Но это выполняется в O (n^2) времени. Мой наставник сказал мне, что, если когда-либо, во время собеседования, меня просят решить проблему, и я начинаю делать это, вставляя петли, я должен остановиться и переосмыслить проблему. По-видимому, всегда есть лучший путь, чем O (n^2). Я подумывал об этом некоторое время, и я не могу найти ответ, независимо от того, как я перефразирую свой вопрос в Google. Является ли это возможным?Итерация по вложенным массивам в линейном времени
1
A
ответ
1
Видимо, всегда есть лучший путь, чем O (N^2)
Я считаю, что это явно ложно. Есть некоторые проблемы, которые действительно являются O (n^2). Если только какая-то особенность языка каким-то образом делает проблему более эффективной, O (n^2) лучше всего подходит для вложенных массивов.
1
Это самый быстрый способ сделать это.
Если вы просматриваете столько записей, сколько записей в общей структуре вложенных массивов ... ну, вы явно не можете сделать лучше, не так ли? ;)
Ваша путаница в том, что вы думаете, что n = размерность структуры, но n фактически = количество записей в общей структуре. Таким образом, это O (п) использовать вложенные циклы, пока конец петли, как только там ничего не осталось на том же уровне вложенности для изучения
Смежные вопросы
- 1. Итерация по многомерным массивам
- 2. Итерация по массивам в haskell
- 3. Итерация по массивам путем отражения
- 4. Итерации по вложенным массивам, хранящим индексы
- 5. Итерация по двум массивам одновременно в Ruby
- 6. C++ итерация по массивам разных типов
- 7. Java: Итерация по многомерным массивам Концепция
- 8. ExtJS XTemplate Итерация по двум массивам параллельно
- 9. Итерация по массивам с помощью усов
- 10. итерация по вложенным объектам в экспресс
- 11. Android Итерация по вложенным объектам в RecyclerView
- 12. Итерация рандомизированного алгоритма в фиксированном пространстве и линейном времени
- 13. Итерация по вложенным JSON массивов iPhone
- 14. Подмножество в линейном времени
- 15. MST в линейном времени
- 16. Flask/Jinja2 - Итерация по вложенным словарям
- 17. Доступ к вложенным массивам/свойствам в javascript
- 18. MongoDB Сортировка по средним комбинированным номерам или вложенным вспомогательным массивам
- 19. итерации по вложенным массивам и обеспечения доступа к каждому индексу
- 20. Итерация по вложенным операциям в meteorjs (по категориям)
- 21. Hangman Game, итерация по массивам с циклом for в C#
- 22. Доступ к вложенным структурированным массивам с numpy
- 23. Итерация над вложенным массивом Json
- 24. JSON.net доступ к вложенным массивам, объектам
- 25. Доступ к вложенным массивам через ng-repeat
- 26. Итерация над вложенным (многоуровневым) hashmap
- 27. Алгоритм Витерби в линейном времени
- 28. Топологическая сортировка в линейном времени?
- 29. f # итерация по двум массивам, используя функцию из библиотеки C#
- 30. Неисправность доступа к вложенным массивам списков в Java
Ммм ... Я почти полностью согласен, кроме «языковой функции» (если функция языка не является квантовым вычислением). Для некоторых задач квадратичное время - лучший алгоритм, который мы имеем. – angelatlarge
@angelatlarge, я думаю, я думал о том, что некоторые свойства кэшируются для массива (например, count/length, sum, min, max и т. Д.). Вероятно, некоторые операции могут ускориться до O (n). Возможно, это растяжение, хотя :) – devuxer