首页 > 编程语言 > 详细

leetcode341 扁平化嵌套数组

时间:2020-03-07 11:18:06      阅读:53      评论:0      收藏:0      [点我收藏+]

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

例如

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/

leetcode341 扁平化嵌套数组

原文:https://www.cnblogs.com/lfri/p/12432798.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!