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

组合问题(去重)

 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的单层递归逻辑和回溯的逻辑。

http://www.xdnf.cn/news/6374.html

相关文章:

  • C++23 新增的查找算法详解:ranges::find_last 系列函数
  • uniapp微信小程序-长按按钮百度语音识别回显文字
  • 印度Rummy游戏支付通道申请策略:技巧类游戏的合规与创新
  • 从零开始学习three.js(18):一文详解three.js中的着色器Shader
  • Spring MVC HttpMessageConverter 的作用是什么?
  • 区块链blog1__合作与信任
  • 电池组PACK自动化生产线:多领域电池生产的“智能引擎”
  • 【美团】后端一面复盘|项目驱动 + 手撕 + JVM + 数据库全面覆盖
  • 重磅发布!OpenAI 推出最新模型 GPT-4.1 系列!
  • 多模态大语言模型arxiv论文略读(七十七)
  • 【氮化镓】HfO2钝化优化GaN 器件性能
  • 【React全栈进阶】从组件设计到性能优化实战指南
  • 什么是TCP协议?它存在哪些安全挑战?
  • K8S Gateway API 快速开始、胎教级教程
  • 无人设备遥控器之无线通讯技术篇
  • 随机矩阵放大的方式 生成相位数据集,用于相位展开
  • 技术更新频繁,团队如何适应变化
  • 什么是接口文档,如何使用,注意事项有哪些
  • 【NLP 74、最强提示词工程 Prompt Engineering 从理论到实战案例】
  • spark和hadoop之间的区别和联系
  • 20250507训练赛补题
  • CCF BDCI基于运营商文本数据的知识库检索(RAG)大赛亚军方案分享
  • 联排半孔PCB如何进行SMT贴片?
  • SymPy | 如何提取指定项的系数
  • 【CTFer成长之路】命令执行RCE
  • 动态规划问题 -- 多状态模型(粉刷房子)
  • ⭐️⭐️⭐️【课时6:如何创建工作流应用】学习总结 ⭐️⭐️⭐️ for《大模型Clouder认证:基于百炼平台构建智能体应用》认证
  • 基于Cholesky分解求解逆矩阵
  • 【autojs】图色识别状态条
  • java课堂笔记6