题目描述
给定一个列表,该列表中的每个元素要么是个列表,要么是整数。
将其变成一个只包含整数的简单列表。
如果给定的列表中的要素本身也是一个列表,那么它也可以包含列表。
样例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