[leetcode]Subsets

Subsets

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],
  []
]

算法思路:

题中要求求出所有的,直接暴力吧,dfs

代码如下:

 1 public class Solution {  List<List<Integer>> res = new ArrayList<List<Integer>>();
 2     public List<List<Integer>> subsets(int[] s) {
 3         if(s == null || s.length== 0) return res;
 4         Arrays.sort(s);
 5         List<Integer> list = new ArrayList<Integer>();
 6         dfs(list,0,0,s);
 7         return res;
 8     }
 9     private void dfs(List<Integer> list,int k,int count,int[] s){
10         if(count > s.length) return;
11         if(count <= s.length){
12             res.add(new ArrayList<Integer>(list));
13         }
14         for(int i = k; i < s.length; i++){
15             list.add(s[i]);
16             dfs(list,i + 1,count+1,s);
17             list.remove(list.size() - 1);
18         }
19     }
20     
21 }

 

posted on 2014-07-25 22:40  喵星人与汪星人  阅读(236)  评论(0编辑  收藏  举报