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]

 

 

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

posted @ 2020-03-07 10:00  Rogn  阅读(372)  评论(0编辑  收藏  举报