LeetCode 40 Combination Sum II 回溯
Given a collection of candidate numbers (candidates
) and a target number (target
), find all unique combinations in candidates
where the candidate numbers sum to target
.
Each number in candidates may only be used once in the combination.
Note: The solution set must not contain duplicate combinations.
Solution
去重的操作和之前的方法一样:对当前的候选答案 以后,在 里面查找。由于不能包含重复的答案,我们在将原数组 以后,碰到的元素如果和之前一个相同,直接跳过 ()
点击查看代码
class Solution { private: vector<vector<int>> ans; vector<int> res; void dfs(vector<int> cd, int tgt, vector<int>& res, int pos){ if(tgt==0){ vector<int> tmp = res; sort(res.begin(), res.end()); if(find(ans.begin(), ans.end(), res)==ans.end()){ ans.push_back(res); } res=tmp; return; } for(int i=pos;i<cd.size();i++){ if(i!=pos && cd[i]==cd[i-1])continue; if(tgt-cd[i]>=0){ res.push_back(cd[i]); dfs(cd,tgt-cd[i], res, i+1); res.pop_back(); } } } public: vector<vector<int>> combinationSum2(vector<int>& candidates, int target) { sort(candidates.begin(), candidates.end()); dfs(candidates, target, res, 0); return ans; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)