题目描述
给定一个嵌套的整型列表。设计一个迭代器,使其能够遍历这个整型列表中的所有整数。
列表中的项或者为一个整数,或者是另一个列表。
示例 1:
输入: [[1,1],2,[1,1]] 输出: [1,1,2,1,1] 解释: 通过重复调用 next 直到 hasNext 返回false,next 返回的元素的顺序应该是: [1,1,2,1,1]。
示例 2:
输入: [1,[4,[6]]] 输出: [1,4,6] 解释: 通过重复调用 next 直到 hasNext 返回false,next 返回的元素的顺序应该是: [1,4,6]。
解题思路
class NestedIterator {
private:
vector<int> ans;
int idx;
int len;
public:
void fn(NestedInteger& tmp){
if(tmp.isInteger()){
ans.push_back(tmp.getInteger());
return;
}else{
vector<NestedInteger> t = tmp.getList();
for(int i=0;i<t.size();i++) fn(t[i]);
}
}
NestedIterator(vector<NestedInteger> &nestedList) {
idx = 0;
for(int i=0;i<nestedList.size();i++){
fn(nestedList[i]);
}
len = ans.size();
}
int next() {
return ans[idx++];
}
bool hasNext() {
return (idx<len);
}
};