【力扣 中等 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;
    }
};
相关推荐
eLIN TECE2 小时前
Go基础之环境搭建
开发语言·后端·golang
念何架构之路2 小时前
Go反射应用技巧
开发语言·后端·golang
shjita2 小时前
java根据键值对中值的大小进行排序的手法。
java·开发语言·servlet
Wect2 小时前
LeetCode 72. 编辑距离:动态规划经典题解
前端·算法·typescript
zhouwy1132 小时前
Poco 与 libevent 网络编程
c++
憨波个2 小时前
【说话人日志】DOVER-Lap:overlap-aware diarization 输出融合算法
人工智能·深度学习·算法·音频·语音识别
叼烟扛炮2 小时前
C++第四讲:类和对象(下)
c++·算法·类和对象
Rabitebla2 小时前
vector 的骨架:三根指针、模板陷阱与迭代器失效的第一现场
开发语言·数据结构·c++·算法
时空系2 小时前
第7篇:功能——打造你的工具箱 Rust中文编程
开发语言·网络·rust
csbysj20203 小时前
CSS !important:深度解析与最佳实践
开发语言