代码随想录算法训练营第36期DAY28

DAY28

216组合总和-iii

未剪枝,注意i=startindex开始:

  1. class Solution {
  2. private:
  3. vector<vector<int>> result;
  4. vector<int> path;
  5. void backtracking(int k,int sum,int targetsum,int startindex){
  6. if(path.size()==k){
  7. if(sum==targetsum){
  8. result.push_back(path);
  9. }
  10. return;
  11. }
  12. for(int i=startindex;i<=9;i++)
  13. {
  14. sum+=i;
  15. path.push_back(i);
  16. backtracking(k,sum,targetsum,i+1);
  17. sum-=i;
  18. path.pop_back();
  19. }
  20. return ;
  21. }
  22. public:
  23. vector<vector<int>> combinationSum3(int k, int n) {
  24. result.clear();
  25. path.clear();
  26. backtracking(k,0,n,1);
  27. return result;
  28. }
  29. };

剪枝版:

  1. class Solution {
  2. private:
  3. vector<vector<int>> result;
  4. vector<int> path;
  5. void backtracking(int k,int sum,int targetsum,int startindex){
  6. if(path.size()==k){
  7. if(sum==targetsum){
  8. result.push_back(path);
  9. }
  10. return;
  11. }
  12. for(int i=startindex;i<=9-(k-path.size())+1;i++)
  13. {
  14. sum+=i;
  15. path.push_back(i);
  16. if(sum>targetsum){
  17. sum-=i;
  18. path.pop_back();
  19. return;
  20. }
  21. backtracking(k,sum,targetsum,i+1);
  22. sum-=i;
  23. path.pop_back();
  24. }
  25. return ;
  26. }
  27. public:
  28. vector<vector<int>> combinationSum3(int k, int n) {
  29. result.clear();
  30. path.clear();
  31. backtracking(k,0,n,1);
  32. return result;
  33. }
  34. };

17电话号码的字母组合

  1. class Solution {
  2. private:
  3. vector<string> map={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
  4. vector<string> result;
  5. string s;
  6. void backtracking(string digits,int index){
  7. //待二刷
  8. if(index==digits.size()){
  9. result.push_back(s);
  10. return ;
  11. }
  12. int digit=digits[index]-'0';
  13. string letters=map[digit];
  14. for(int i=0;i<letters.size();i++){
  15. s.push_back(letters[i]);
  16. backtracking(digits,index+1);
  17. s.pop_back();
  18. }
  19. }
  20. public:
  21. vector<string> letterCombinations(string digits) {
  22. s.clear();
  23. result.clear();
  24. if(digits.size()==0){
  25. return result;
  26. }
  27. backtracking(digits,0);
  28. return result;
  29. }
  30. };
相关推荐
int型码农3 分钟前
数据结构第七章(四)-B树和B+树
数据结构·b树·算法·b+树
先做个垃圾出来………39 分钟前
汉明距离(Hamming Distance)
开发语言·python·算法
小羊在奋斗1 小时前
【LeetCode 热题 100】二叉树的最大深度 / 翻转二叉树 / 二叉树的直径 / 验证二叉搜索树
算法·leetcode·职场和发展
2301_794461572 小时前
力扣-283-移动零
算法·leetcode·职场和发展
编程绿豆侠2 小时前
力扣HOT100之二叉树:98. 验证二叉搜索树
算法·leetcode·职场和发展
技术流浪者2 小时前
C/C++实践(十)C语言冒泡排序深度解析:发展历史、技术方法与应用场景
c语言·数据结构·c++·算法·排序算法
I AM_SUN3 小时前
98. 验证二叉搜索树
数据结构·c++·算法·leetcode
学习中的码虫3 小时前
数据结构基础排序算法
数据结构·算法·排序算法
_安晓4 小时前
数据结构 -- 顺序查找和折半查找
数据结构
yidaqiqi4 小时前
[目标检测] YOLO系列算法讲解
算法·yolo·目标检测