首页 > 其他 > 详细

[Leetcode]-- Subsets

时间:2014-02-03 13:16:19      阅读:392      评论:0      收藏:0      [点我收藏+]

Given a set of distinct integers, S, return all possible subsets.

Note:

  • Elements in a subset must be in non-descending order.
  • The solution set must not contain duplicate subsets.

 

For example,
If S = [1,2,3], a solution is:

[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

[解题思路]
这个就是排列组合中的排列问题。递归如下逻辑:
Func Generate
对于输入字符串s的每一位字符
        选取该字符到子集合中,并输出
        如果,当前字符不是最后一位字符
                 递归调用Generate,处理下一位字符

bubuko.com,布布扣
public class Solution {
    public ArrayList<ArrayList<Integer>> subsets(int[] S) {
        Arrays.sort(S);
        ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> list = new ArrayList<Integer>();
        generate(result, list, S, 0, S.length);
        return result;
    }
    
    
    public void generate(ArrayList<ArrayList<Integer>> result, ArrayList<Integer> list, int[] S, int depth, int length){
        result.add(list);
        if(depth == length) return;
        for(int i = depth; i< length; i++){
            ArrayList<Integer> tmp = new ArrayList<Integer>();
            tmp.addAll(list);
            tmp.add(S[i]);
            generate(result, tmp, S, i+1, length);
        }
    }
}
bubuko.com,布布扣

[Leetcode]-- Subsets

原文:http://www.cnblogs.com/RazerLu/p/3537451.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!