子集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
相关推荐
dyyx11120 小时前
C++中的过滤器模式
开发语言·c++·算法
lrh12280021 小时前
详解决策树算法:分类任务核心原理、形成流程与剪枝优化
算法·决策树·机器学习
期末考复习中,蓝桥杯都没时间学了21 小时前
力扣刷题15
算法·leetcode·职场和发展
2301_8174973321 小时前
C++中的装饰器模式高级应用
开发语言·c++·算法
m0_5494166621 小时前
C++编译期字符串处理
开发语言·c++·算法
m0_5811241921 小时前
C++中的适配器模式实战
开发语言·c++·算法
A尘埃21 小时前
零售连锁店生鲜品类销量预测——线性回归(Linear Regression)
算法·线性回归·零售
u01092727121 小时前
C++与人工智能框架
开发语言·c++·算法
Fleshy数模21 小时前
从欠拟合到正则化:用逻辑回归破解信用卡失信检测的召回率困境
算法·机器学习·逻辑回归
im_AMBER1 天前
Leetcode 111 两数相加
javascript·笔记·学习·算法·leetcode