leetcode341 扁平化嵌套数组

题目:把嵌套数组展开成一维数组,

例如

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]

扫描二维码关注公众号,回复: 9636156 查看本文章

参考链接:https://leetcode-cn.com/problems/flatten-nested-list-iterator/comments/

猜你喜欢

转载自www.cnblogs.com/lfri/p/12432798.html
今日推荐