题目链接:
力扣https://leetcode-cn.com/problems/subsets/
【回溯法】用0,1表示是否将这个元素纳入子集中,遍历所有的可能性。
class Solution {
int[] nums;
int[] arrs;
int n;
Listå<List<Integer>> ans = new ArrayList<>();
public void backTrack(int t){
if(t == n){
List<Integer> tmp = new ArrayList<>();
for(int i = 0; i < n; i++){
if(arrs[i] == 1) tmp.add(nums[i]);
}
ans.add(tmp);
return;
}else{
arrs[t] = 1;
backTrack(t + 1);
arrs[t] = 0;
backTrack(t + 1);
}
}
public List<List<Integer>> subsets(int[] nums) {
n = nums.length;
this.nums = nums;
arrs = new int[n];
backTrack(0);
return ans;
}
}