当前位置: 首页 > article >正文

代码随想录算法训练营第二十四天-回溯算法-90. 子集II

  • 本题给定的集合中含有重复元素的
  • 所以这里需要涉及去重的问题
  • 集合中的元素要先排序
  • 使用一个集合来标记哪些元素被使用过
#include <iostream>
#include <vector>

class Solution {
private:
    std::vector<int> path;
    std::vector<std::vector<int>> result;
    void backtracking(std::vector<int>& nums, int startIndex, std::vector<bool>& used) {
        result.push_back(path);
        for (int i = startIndex; i < nums.size(); ++i) {
            if (i > 0 && nums.at(i) == nums.at(i - 1) && used.at(i - 1) == false)
                continue;
            path.push_back(nums.at(i));
            used.at(i) = true;
            backtracking(nums, i + 1, used);
            used.at(i) = false;
            path.pop_back();
        }
    }
public:
    std::vector<std::vector<int>> subsetsWithDup(std::vector<int>& nums) {
        std::vector<bool> used(nums.size(), false);
        std::sort(nums.begin(), nums.end());
        backtracking(nums, 0, used);
        return result;
    }
};

int main()
{
    Solution s;
    return 0;
}
  • 汇总

http://www.kler.cn/a/468945.html

相关文章:

  • 【Uniapp-Vue3】image媒体组件属性
  • 如何删除 Docker 中的悬虚镜像?
  • Backend - EF Core(C# 操作数据库 DB)
  • 25/1/6 算法笔记<强化学习> 初玩V-REP
  • 【CPU】堆栈和堆栈指针(个人草稿)
  • 【C++】P2550 [AHOI2001] 彩票摇奖
  • 【Vaadin flow 实战】第2讲-深入理解vaadin flow技术路线原理
  • TensorFlow深度学习实战(3)——深度学习中常用激活函数详解
  • 产品线上交付阶段出现的两次显著Bug分析
  • css 关于flex布局中子元素的属性flex
  • 服务器开发 的设计模式(Design Patterns)核心知识
  • 出现 Error during query execution: StatementCallback; bad SQL grammar 解决方法
  • windows C#-确定字符串是否表示数值
  • 【信息系统项目管理师】高分论文:论信息系统项目的风险管理(资金管控系统)
  • Go语言的 的集合框架(Collections Framework)基础知识
  • 网络安全【C10-2024.10.1】-sql注入基础
  • Oracle DG备库数据文件损坏修复方法(ORA-01578/ORA-01110)
  • 【人工智能数据科学与数据处理】——深入详解大数据与数据库技术之非关系型数据库:MongoDB 的关键概念、核心原理、示例及主要应用
  • 使用Python构建智能医疗诊断系统
  • 解决sublime编译无法输入问题
  • PDF2Audio - 阅读 PDF 的新方式
  • 【工具整理】WIN换MAC机器使用工具整理
  • vue数据请求通用方案:axios的options都有哪些值
  • 《计算机网络A》单选题(详解)
  • 2、蓝牙打印机点灯-GPIO输出控制
  • AdaBoost算法详解与PyTorch实现