leetcode(78)子集

子集

解题思路:递归+红色区域的写法很重要,在这里要千万注意

class Solution {
    public List<List<Integer>> subsets(int[] nums) {
        List<Integer[]> result = new ArrayList<Integer[]>();
        List<List<Integer>> resultList = new ArrayList<List<Integer>>();
        int len = nums.length;
        subsets2(result,nums,len);
        for(Integer[] i : result){
            resultList.add(Arrays.asList(i));
        }
        return resultList;
    }
    public void subsets2(List<Integer[]> result, int[] nums, int len) {
        if(len==0){
            Integer[] ele = new Integer[len];
            result.add(ele);
            return;
        }
        subsets2(result, nums, len - 1);
        Integer[] ele = null;
        Integer[] temp = null;
        int size = result.size();
        for(int i=0;i<size;++i){
            temp = result.get(i);
            ele = new Integer[temp.length+1];
            System.arraycopy(temp,0,ele,0,temp.length);
            ele[temp.length] = nums[len-1];
            result.add(ele);
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/erdanyang/p/11273681.html
今日推荐