扁平化嵌套列表迭代器-中等
难度:中等
题目描述:
给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。
列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。
示例:
输入: [[1,1],2,[1,1]]
输出: [1,1,2,1,1]
解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。
1
2
3
4
2
3
4
解题思路:
var NestedIterator = function (nestedList) {
this.num = null;
this.flag = false;
this.stack = [];
this.stack.push(nestedList);
};
NestedIterator.prototype.next = function () {
this.flag = false;
return this.num;
};
NestedIterator.prototype.hasNext = function () {
if (!this.stack.length) return false;
while (this.stack.length && !this.flag) {
let temp = this.stack[this.stack.length - 1];
if (temp.length) {
let tt = temp.shift();
if (tt.isInteger()) {
this.num = tt.getInteger();
this.flag = true;
} else this.stack.push(tt.getList());
} else {
this.stack.pop();
}
}
return this.flag;
};
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
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