zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    3月6日
    2月28日
    2月23日
    2月20日
    2月19日
    2月18日
    2月17日
    2月16日
    2月15日
    面试算法题——硬币找零
  • 原文地址:https://www.cnblogs.com/lfri/p/12432798.html
Copyright © 2011-2022 走看看