题目:把嵌套数组展开成一维数组,
例如
Input: [[1,1],2,[1,1]] Output: [1,1,2,1,1]
Input: [1,[4,[6]]]
Output: [1,4,6]
题解:
一种简单的想法,不管怎么嵌套数字的前后顺序不会变,所以去掉括号即是答案。但是这样就没意思了。
另一种容易想到的是递归法,遇到数组就去递归,整数直接push
class NestedIterator { public: vector<int>res; int index = 0; NestedIterator(vector<NestedInteger> &nestedList) { dfs(nestedList); } int next() { return res[index++]; } bool hasNext() { return index < res.size(); } void dfs(vector<NestedInteger> &nestedList) { for(NestedInteger x : nestedList) //NestedInteger迭代器,x为inerger或list { if(x.isInteger()) res.push_back(x.getInteger()); else dfs(x.getList()); } } };
回头看,嵌套数组其实是数的一种表示方法,嵌套数组的值是从左至右树的叶子节点。
例如:
[1,[2,3,[4,5],6],7]
[1,2,3,4,5,6,7]
参考链接:https://leetcode-cn.com/problems/flatten-nested-list-iterator/comments/
原文:https://www.cnblogs.com/lfri/p/12432798.html