您的位置:首页 > 其它

平面列表

2016-10-28 09:43 183 查看
给定一个列表,该列表中的每个要素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。

样例

给定 
[1,2,[1,2]]
,返回 
[1,2,1,2]

给定 
[4,[3,[2,[1]]]]
,返回 
[4,3,2,1]
。【递归实现】

/**

 * // 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> res = new ArrayList<Integer>();//初始化整型List

        flattenTo(res,nestedList);

        return res;

    }

    public void flattenTo(List<Integer> res,List<NestedInteger> nestedList){

        if(nestedList!=null){

            for(NestedInteger nestedI:nestedList){

                if(nestedI.isInteger()){

                   res.add(nestedI.getInteger());//是一个整数,则加入list

                }

                else{

                    flattenTo(res,nestedI.getList());//是一个列表,则循环调用

                }

            }

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: