Files
obsidian/АиСД/Задачи/LeetCode/Flatten Nested List Iterator.md
T
roma-dxunvrs 0e6e583e6d
deploy / Pull and Restart (push) Successful in 17s
refactor: wiki links -> md links
2026-09-22 08:52:23 +03:00

22 lines
1.1 KiB
Markdown

Leetcode #341 | #Medium | [Рекурсия](../../Методы/Рекурсия.md) | [Design](../../Design/Design.md)
## Идея
Заводим обычный лист и индекс. При next увеливаем индекс, перед этим отдав элемент. hasNext обычное сравнение index и list.size(). На старте вложенность убираем рекурсией. Внимательно надо изучить методы апишки.
## Big-O
- Время ```O(N)```
- Память ```O(N)```
## Код
```Java
public class NestedIterator implements Iterator<Integer> {
private List<Integer> list = new ArrayList<>();
private int idx = 0;
public NestedIterator(List<NestedInteger> nestedList) { dfs(nestedList); }
private void dfs(List<NestedInteger> nested) {
for (NestedInteger el : nested) {
if (el.isInteger()) list.add(el.getInteger());
else dfs(el.getList());
}
}
public Integer next() { return list.get(idx++); }
public boolean hasNext() { return idx < list.size(); }
}
```