给定一个整数数组 nums ,其中可能包含重复元素,请你返回这个数组的所有可能子集。
返回的答案中不能包含重复的子集,将答案按字典序进行排序。
数据范围:数组长度满足 ,数组中元素大小满足
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型二维数组 */ let result=[],path=[],visited=[]; function subsets( nums ) { // write code here nums.sort(function(a,b){ return a-b; }) backTrace(nums,nums.length,0); return result; } function backTrace(n,k,start){ result.push([...path]); for(let i=start;i<k;i++){ // 增加访问标记visited,避免[1,1,1] 重复元素重复添加 if(i>start && n[i]==n[i-1]) continue; // 满足条件继续 // if(i > 0 && n[i]==n[i-1] && !visited[i-1]) continue; path.push(n[i]); // visited[i]=1; // 节点被访问 backTrace(n,k,i+1); path.pop(); // visited[i]=0; // 节点访问标记置0 } } module.exports = { subsets : subsets };