【力扣 中等 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;
    }
};
相关推荐
小白要努力sgy几秒前
实时通信框架CyberRT
c++·自动驾驶·实时通讯
hansang_IR2 分钟前
【记录】loj2967「COCI 2010.03.06」PROGRAM
c++·算法
mumu_wangwei17 分钟前
【QFS】Golang自研的QFS分布式文件系统,QFS文件系统使用
开发语言·后端·golang
心中有国也有家22 分钟前
PaddlePaddle 适配 NPU 的技术全解析——从算子接入到端到端性能优化
人工智能·分布式·算法·性能优化·架构·paddlepaddle
兰令水23 分钟前
topcode【随机算法题】【2026.5.24打卡-java版本】
java·开发语言·算法
hef28834 分钟前
Java Switch和Break语句用法详解:从入门到实战
java·开发语言
techdashen41 分钟前
在 Rust 异步接口的丛林中生存:从同步 I/O 到手写异步状态机
开发语言·后端·rust
徐小夕42 分钟前
面试官:AI生成到90%突然断了,你的解决方案是什么?(万字长文深度剖析)
前端·vue.js·算法
EnCi Zheng1 小时前
09a-斯坦福 CS336 作业一:BPE分词器
开发语言·python·算法
sycmancia1 小时前
Qt——发送自定义事件
开发语言·qt