给定一个列表,该列表中的每个要素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。
易错点:nestedList.get(i).getInteger(),取集合中的元素时忘记get(i),,就取不到了
扩展:怎么用非递归来解答
思路:比较简单,直接递归调用即可。
- /**
- * // This is the interface that allows for creating nested lists.
- * // You should not implement it, or speculate about its implementation
- * public interface NestedInteger {
- *
- * // @return true if this NestedInteger holds a single integer,
- * // rather than a nested list.
- * public boolean isInteger();
- *
- * // @return the single integer that this NestedInteger holds,
- * // if it holds a single integer
- * // Return null if this NestedInteger holds a nested list
- * public Integer getInteger();
- *
- * // @return the nested list that this NestedInteger holds,
- * // if it holds a nested list
- * // Return null if this NestedInteger holds a single integer
- * public List<NestedInteger> getList();
- * }
- */
- 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> list=new ArrayList<>();
- doFlatten(nestedList,list);
- return list;
- }
- public void doFlatten(List<NestedInteger> nestedList,List<Integer> list){
- if(nestedList != null){
- for(int i=0;i<nestedList.size();i++){
- if(nestedList.get(i).isInteger()){
- list.add(nestedList.get(i).getInteger());
- }else{
- doFlatten(nestedList.get(i).getList(),list);
- }
- }
- }
- }
- }