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

组合问题(去重)

 40. 组合总和 II - 力扣(LeetCode)

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

 元素的选取还是只取一次,构造树形结构,但不同的是要将初始数组排序,这样可以筛选出重复项,定义used数组,bool类型的,记录此元素是否被取过,如果两次取到元素相同,而且前一次取的used值为false则要进行去重。

 

组合问题(多条件)-CSDN博客 

其他逻辑与组合问题的逻辑一致,需要添加的是used数组的初始化,used的单层递归逻辑和回溯的逻辑。

相关文章:

  • 【Java】Spring的声明事务在多线程场景中失效问题。
  • 欧拉计划 Project Euler 73(分数有范围计数)题解
  • 第七节第三部分:从JDK8开始接口新增的方法、接口的多继承、注意事项
  • 产品方法论与 AI Agent 技术的深度融合:从决策智能到价值创造
  • 串口共用错误排查指南(2025年5月15日 09:25)
  • AI大模型应用:17个实用场景解锁未来
  • 全国青少年信息素养大赛 Python编程挑战赛初赛 内部集训模拟试卷九及详细答案解析
  • 特种设备事故背后,叉车智能监控系统如何筑牢安全防线
  • 深度学习中--模型调试与可视化
  • 【电子通识】热敏纸的静态发色性能和动态发色性能测试方法
  • 考研408《计算机组成原理》复习笔记,第二章(2)数值数据的表示(浮点数篇)
  • Cursor vs VS Code vs Zed
  • leetcode0621. 任务调度器-medium
  • Linux记录
  • 串行接口与并行接口
  • Scapy库交互式运行
  • 【steganalysis】Enhancing practicality and efficiency of deepfake detection
  • Java随机生成邀请码 (包含字母大小写+数字)
  • 代码随想录 算法训练 Day2:数组
  • 缺乏需求优先级划分时,如何合理分配资源?
  • 昆明网站开发/营销策略4p
  • 做国外网站做什么内容/nba新闻最新消息
  • 做网站被骗了怎么办/怎么查百度收录
  • 网站租用服务器多少钱/网站推广排名收费
  • 视频网站开发问题/b2b网站大全免费推广
  • 天津建设工程信息网 官网首页/seo云优化