[力扣题解]40. 组合总和 II

embedded/2024/9/24 7:04:17/

题目:40. 组合总和 II

思路

回溯法
(回溯还是很难的,递归不好理解,看着代码很少吧。。。)

代码

class Solution {
public:vector<vector<int>> result;vector<int> path;void function(vector<int>& candidates, int target, int sum, int startindex, vector<bool> used){int i;int size;if(sum == target){result.push_back(path);return;}if(sum > target){return;}size = candidates.size();for(i = startindex; i < size; i++){// used[i-1] == true : path中前面有人使用过;//              false : 有别的path使用过 if(i > 0 && candidates[i] == candidates[i-1] && used[i-1] == false){continue;}used[i] = true;sum += candidates[i];path.push_back(candidates[i]);function(candidates, target, sum, i+1, used);used[i] = false;sum -= candidates[i];path.pop_back();}}vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {vector<bool> used (candidates.size(), false);result.clear();path.clear();sort(candidates.begin(), candidates.end());function(candidates, target, 0, 0, used);return result;}
};

难点在于去重,有2个方面的去重,从搜索树上看,
(1)同一层之间的去重;
(2)不同层之间的去重;
用人话来讲:
(1)之前有路径用过这个元素,但和当前路径无关;
(2)当前路径上用过这个元素;
在代码里面用了used这个变量来辅助去重,按照题目要求,可以出现[1, 1, 6],不能出现[1, 7], [1, 7](即使里面是2个不同的1),所以涉及到是去重情况(1)

无法容忍之前路径上用过同一个元素(可能上述情况(1)(2)两个版本的理解有点不一一对应,总之是这个意思)


http://www.ppmy.cn/embedded/37297.html

相关文章

shell翻译官

shell脚本概述 shell的作用&#xff1a; 完成自动化运维工作&#xff0c;批量完成重复操作&#xff0c;结合crontab完成周期性任务 shell编程规范&#xff1a; Shell脚本的编写 vim XXX.sh 1.申明解释器 #!/bin/bash #!/bin/python 2.编写注释信息 要以 # 号开…

聪明与诚实:社会信任的桥梁

在现代社会中&#xff0c;我们经常听到这样的评价&#xff1a;“某人真聪明。”然而&#xff0c;当我们深入思考时&#xff0c;会发现“聪明”这个词背后所承载的含义并不单一。聪明和狡诈往往被混淆&#xff0c;而诚实的价值却时常被忽视。在一个高度诚信的社会里&#xff0c;…

汽车混动结构概念

混动汽车中的PHEV、HEV和REEV分别代表了不同的技术概念和类型&#xff0c;它们各自有其特点和区别。以下是关于这三种混动汽车的概念和它们之间的主要区别&#xff1a; PHEV&#xff08;插电式混合动力汽车&#xff0c;Plug-in Hybrid Electric Vehicle&#xff09; 概念&…

开源模型应用落地-CodeQwen模型小试-探索更多使用场景(三)

一、前言 代码专家模型是基于人工智能的先进技术&#xff0c;它能够自动分析和理解大量的代码库&#xff0c;并从中学习常见的编码模式和最佳实践。这种模型可以提供准确而高效的代码建议&#xff0c;帮助开发人员在编写代码时避免常见的错误和陷阱。 通过学习代码专家模型&…

二叉树遍历

一、树的引入 在对数据进行管理时&#xff0c;数据的查找是一个非常常见的基本操作&#xff0c;它是根据某个给定的关键字 K K K&#xff0c;从集合 R R R中找到关键字与 K K K相同的记录。根据集合中的记录是否发生动态变化&#xff0c;查找分为动态查找和静态查找。静态查找…

重庆大足某厂不锈钢管件酸洗钝化-智渍洁

简报&#xff1a;重庆大足某厂不锈钢管件酸洗钝化 重庆大足某厂不锈钢管件酸洗钝化 - 重庆智渍洁环保科技有限公司简报&#xff1a;重庆大足某厂不锈钢管件酸洗钝化https://www.zhizijie.com/hl/zixun/gongsi/237.html

芸众商城电商专业版400+插件源码+搭建教程

介绍&#xff1a; 芸众商城社交电商系统SAAS平台前端基于vue开发&#xff0c;后端基于研发积分商城系统源码 php&#xff0c;本文安装芸众商城全插件&#xff08;400多个&#xff09;商业版平台源码&#xff0c;可同时支持多端口部署运行&#xff1b;使用宝塔面板一键部署的形…

我的256天之创作纪念日

目录 时光 数据的一些变化 开心的事 憧憬 时光 自上次CSDN的消息推送&#xff0c;又一个128天过去了&#xff0c;整天的工作和生活都在忙忙碌碌中度过&#xff0c;每到能静下来片刻&#xff0c;都倍感珍惜。因为一些原因&#xff0c;能够陪伴家人的时间越来越少&#xff…