-
Notifications
You must be signed in to change notification settings - Fork 45
/
_341.java
29 lines (25 loc) · 808 Bytes
/
_341.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
import java.util.*;
/**
* LeetCode 341 - Flatten Nested List Iterator
* <p>
* Basically use a stack to mimic the dfs order.
* I am using a Deque instead in my code since it is more convenience.
*/
public class _341 implements Iterator<Integer> {
Deque<NestedInteger> s;
public _341(List<NestedInteger> nestedList) {
s = new ArrayDeque<>(nestedList == null ? Arrays.asList() : nestedList);
}
@Override
public Integer next() {
return s.pollFirst().getInteger();
}
@Override
public boolean hasNext() {
while (!s.isEmpty() && !s.peekFirst().isInteger()) {
List<NestedInteger> list = s.pollFirst().getList();
for (int i = list.size() - 1; i >= 0; i--) s.addFirst(list.get(i));
}
return !s.isEmpty();
}
}