难度:中等
题目描述:
给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。
列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。
示例:
输入: [[1,1],2,[1,1]]
输出: [1,1,2,1,1]
解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。
解题思路:
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;
};