The idea implements DFS and appends each char to recursive all of remaining String. Remember add the empty case, and each loop needs to add each single char into results list.
/**
* Create a new list to separate the reference.
*
*/
public class Solution {
public List<List<Integer>> subsets(int[] S) {
if(S == null || S.length == 0){
return new ArrayList<List<Integer>>();
}
return subsetsOps(S, 0);
}
private List<List<Integer>> subsetsOps(int[] S, int start){
List<List<Integer>> results = new ArrayList<List<Integer>>();
results.add(new ArrayList<Integer>());
if(start == S.length){
return results;
}
List<List<Integer>> pres = subsetsOps(S, start + 1);
for(List<Integer> pre : pres){
if(pre.size() != 0){
List<Integer> res = new ArrayList<Integer>();
res.addAll(pre);
results.add(res);
}
pre.add(S[start]);
Collections.sort(pre);
results.add(pre);
}
return results;
}
}
没有评论:
发表评论