扁平化嵌套列表迭代器-中等


难度:中等

题目描述:
给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。

列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。

示例:

输入: [[1,1],2,[1,1]]
输出: [1,1,2,1,1]
解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]
1
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
最后更新时间: 6/1/2020, 9:43:41 PM