子集II(力扣90)

解题思路:used判断是否出现过,然后遍历就好了

具体代码如下:

class Solution {

public:

vector<vector<int>>result;

vector<int>path;

void travelBack(vector<int>&nums,int startIndex,vector <bool>&used){

result.push_back(path);

for(int i=startIndex;i<nums.size();i++){

if(i>0&&nums[i-1]==nums[i]&&used[i-1]==false){

continue;

}

path.push_back(nums[i]);

used[i]=true;

travelBack(nums,i+1,used);

path.pop_back();

used[i]=false;

}

return ;

}

vector<vector<int>> subsetsWithDup(vector<int>& nums) {

sort(nums.begin(),nums.end());

vector<bool>used(nums.size(),false);

travelBack(nums,0,used);

return result;

}

};

题目如下:

给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的

子集

(幂集)。

解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。

示例 1:

复制代码
输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]

示例 2:

复制代码
输入:nums = [0]
输出:[[],[0]]

提示:

  • 1 <= nums.length <= 10
  • -10 <= nums[i] <= 10
相关推荐
会编程的土豆几秒前
【数据结构与算法】再次全面了解LCS底层
开发语言·数据结构·c++·算法
大熊背1 小时前
如何利用Lv值实现三级降帧
算法·自动曝光·lv·isppipeline
大尚来也1 小时前
驾驭并发:.NET多线程编程的挑战与破局之道
java·前端·算法
向阳而生,一路生花1 小时前
深入浅出 JDK7 HashMap 源码分析
算法·哈希算法
君义_noip2 小时前
信息学奥赛一本通 4150:【GESP2509七级】⾦币收集 | 洛谷 P14078 [GESP202509 七级] 金币收集
c++·算法·gesp·信息学奥赛·csp-s
摸个小yu2 小时前
【力扣LeetCode热题h100】链表、二叉树
算法·leetcode·链表
汀、人工智能2 小时前
[特殊字符] 第93课:太平洋大西洋水流问题
数据结构·算法·数据库架构·图论·bfs·太平洋大西洋水流问题
ZPC82102 小时前
rviz2 仿真控制器与真实机器人切换
人工智能·算法·机器人
澈2072 小时前
双指针,数组去重
c++·算法
小辉同志3 小时前
207. 课程表
c++·算法·力扣·图论