【补档 12th Jan】子集2
给你一个整数数组 nums
,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。
输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]
class Solution {
List<List<Integer>> res = new LinkedList<List<Integer>>();
boolean[] flags;
public List<List<Integer>> subsetsWithDup(int[] nums) {
int num_len = nums.length;
Arrays.sort(nums);
LinkedList<Integer> track = new LinkedList<Integer>();
backtrack(nums,0,num_len,track);
return res;
}
public void backtrack(int[] nums, int start, int length, LinkedList<Integer> track){
res.add(new ArrayList(track));
for(int i = start; i < length; i++){
//先判断 && 之前的语句 如果是false 就不执行后面的语句
if(i != start && nums[i] == nums[i-1]){
//continue语句的作用是跳过本次循环体中剩下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为只是中止(跳过)本次循环,接着开始下一次循环。
//break用于跳出一个循环体或者完全结束一个循环,不仅可以结束其所在的循环,还可以结束其外层循环
continue;
}
track.addLast(nums[i]);
backtrack(nums,i+1,length,track);
track.removeLast();
}
}
}
标签:LinkedList,nums,int,12th,补档,Jan,track,length,子集
From: https://www.cnblogs.com/rickierun/p/17052860.html