LeetCode/组合数和
2022/5/22 23:06:53
本文主要是介绍LeetCode/组合数和,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
给你一个无重复元素的整数数组candidates和一个目标整数target,找出 candidates中可以使数字和为目标数 target的所有不同组合,并以列表形式返回,你可以按任意顺序 返回这些组合
candidates中的同一个数字可以无限制重复被选取,如果至少一个数字的被选数量不同则两种组合是不同的。
回溯法
每次选取候选数组中的一位,默认第一位,递归选取该位以及后一位,避免重复递归,排序后使得算法更加优化
class Solution { public: vector<vector<int>> res; vector<int> temp; vector<vector<int>> combinationSum(vector<int>& candidates, int target) { sort(candidates.begin(),candidates.end());//排序为了减少递归 trackback(candidates,0,target);//从第一个数开始选 return res; } void trackback(vector<int>& candidates,int i,int target){ if(target==0){ res.push_back(temp);//满足条件记录 return; } for(;i<candidates.size();i++){ if(target>=candidates[i]){ temp.push_back(candidates[i]); trackback(candidates,i,target-candidates[i]);//递归下一次选取,往后选 temp.pop_back(); } else break;//不满足直接跳出循环,因为后面的更不满足 } } };
这篇关于LeetCode/组合数和的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升