[leetcode]Subsets
子集DFS。注意:1. 层数是k还是k+1;2.Java中ArrayList的排序是Collections.sort(a)
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public ArrayList<ArrayList<Integer>> subsets(int[] S) {
// Start typing your Java solution below
// DO NOT write main() function
boolean[] status = new boolean[S.length];
ArrayList<ArrayList<Integer>> ans = new ArrayList<ArrayList<Integer>>();
dfs(S, status, 0, S.length, ans);
return ans;
}
public void dfs(int[] S, boolean[] status, int k, int n, ArrayList<ArrayList<Integer>> arr) {
if (k == n) {
ArrayList<Integer> a = new ArrayList<Integer>();
for (int i = 0; i < n; i++) {
if (status[i]) {
a.add(S[i]);
}
}
Collections.sort(a);
arr.add(a);
return;
}
else {
status[k] = true;
dfs(S, status, k+1, n, arr);
status[k] = false;
dfs(S, status, k+1, n, arr);
}
}
}

浙公网安备 33010602011771号