算法 简单 | 22. 列表扁平化

算法 简单 | 22. 列表扁平化

题目描述

给定一个列表,该列表中的每个元素要么是个列表,要么是整数。
将其变成一个只包含整数的简单列表。

如果给定的列表中的要素本身也是一个列表,那么它也可以包含列表。

样例1

输入: [[1,1],2,[1,1]]
输出: [1,1,2,1,1] 

样例2

输入: [1,2,[1,2]]
输出: [1,2,1,2]

样例3

输入: [4,[3,[2,[1]]]]
输出: [4,3,2,1]

java题解

递归处理,每碰到列表就递归处理,每碰到一个数字就添加进答案数组中。

public class Solution {

    // @param nestedList a list of NestedInteger
    // @return a list of integer
    public List<Integer> flatten(List<NestedInteger> nestedList) {
        // Write your code here
        List<Integer> result = new ArrayList<Integer>();
        for (NestedInteger ele : nestedList)
            if (ele.isInteger())
                result.add(ele.getInteger());
            else
                result.addAll(flatten(ele.getList()));
        return result;
    }
}

C++题解

递归处理,每碰到列表就递归处理,每碰到一个数字就添加进答案数组中。

class Solution {
public:
    // @param nestedList a list of NestedInteger
    // @return a list of integer
    vector<int> flatten(vector<NestedInteger> &nestedList) {
        // Write your code here
        vector<int> result;
        for (auto ele : nestedList)
            if (ele.isInteger())
                result.push_back(ele.getInteger());
            else {
                vector<NestedInteger> sub_list = ele.getList();
                vector<int> temp = flatten(sub_list);
                result.insert(result.end(), temp.begin(), temp.end());
            }

        return result;
    }
};

python题解

递归处理,每碰到列表就递归处理,每碰到一个数字就添加进答案数组中。

class Solution(object):

    # @param nestedList a list, each element in the list 
    # can be a list or integer, for example [1,2,[1,2]]
    # @return {int[]} a list of integer
    def flatten(self, nestedList):
        stack = [nestedList]
        flatten_list = []
        
        while stack:
            top = stack.pop()
            if isinstance(top, list):
                for elem in reversed(top):
                    stack.append(elem)
            else:
                flatten_list.append(top)
                
        return flatten_list
发布了148 篇原创文章 · 获赞 19 · 访问量 3634

猜你喜欢

转载自blog.csdn.net/qq_43233085/article/details/104048828
今日推荐