【力扣 中等 C++】90. 子集 II

目录

题目

解法一:回溯


题目

解法一:回溯

cpp 复制代码
class Solution
{
private:
    void backTrack(vector<vector<int>>& subsets, vector<int>& subset,
        const vector<int>& nums, int startIndex)
    {
        subsets.push_back(subset);

        for (int i {startIndex}; i < nums.size(); i++)
        {
            // 去重
            if (i > startIndex && nums[i - 1] == nums[i])
                continue;

            subset.push_back(nums[i]);
            backTrack(subsets, subset, nums, i + 1);
            subset.pop_back();
        }
    }

public:
    vector<vector<int>> subsetsWithDup(vector<int>& nums)
    {
        vector<vector<int>> subsets;
        vector<int> subset;
        
        sort(nums.begin(), nums.end());
        backTrack(subsets, subset, nums, 0);
        return subsets;
    }
};
相关推荐
alphaTao3 分钟前
LeetCode 每日一题 2026/3/16-2026/3/22
linux·windows·leetcode
空空潍4 分钟前
LeetCode力扣 hot100一刷完结
算法·leetcode
leaves falling7 分钟前
搜索插入位置(第一个≥target的位置)
算法
历程里程碑7 分钟前
41 .UDP -3 群聊功能实现:线程池助力多客户端通信
linux·开发语言·网络·数据结构·c++·网络协议·udp
lcreek7 分钟前
LeetCode 1162.地图分析
算法·leetcode·bfs
山栀shanzhi9 分钟前
【FFmpeg】是什么是未压缩的裸流?
c++·ffmpeg
zly886537210 分钟前
windsurf rules与skill的使用
linux·c语言·开发语言·驱动开发
寒月小酒10 分钟前
3.20 OJ
算法
AI科技星14 分钟前
基于空间光速螺旋归一化的动力学方程推导与数值验证
人工智能·线性代数·算法·机器学习·平面