class Solution {
List<List<Integer>> result = new ArrayList<List<Integer>>();
int n, k;
public List<List<Integer>> subsets(int[] nums) {
n = nums.length;
for (k = 0; k < n + 1; k++) {
backtrack(0, new ArrayList<Integer>(), nums);
}
return result;
}
public void backtrack(int first, ArrayList<Integer> cur, int[] nums) {
if (cur.size() == k) {
result.add(new ArrayList(cur));
}
for (int i = first; i < n; i++) {
cur.add(nums[i]);
backtrack(i + 1, cur, nums);
cur.remove(cur.size() - 1);
}
}
}
backtrackㅇㄹ 써야하는건 알았는데 어떻게 쓰는지 모르겠어서...^^ 답안을 봤다
Runtime: 1 ms, faster than 59.97% of Java online submissions for Subsets.
Memory Usage: 38.9 MB, less than 98.00% of Java online submissions for Subsets.