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

算法打卡 Day28(回溯算法)-组合总数 + 组合总数 Ⅱ+ 电话号码的字母组合

文章目录

  • Leetcode 17-电话号码的字母组合
    • 题目描述
    • 解题思路
  • Leetcode 39-组合总数
    • 题目描述
    • 解题思路
  • Leetcode 216-组合总数 Ⅲ
    • 题目描述
    • 解题思路

Leetcode 17-电话号码的字母组合

题目描述

https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/

在这里插入图片描述

解题思路

class Solution {
public:vector<string> res;string path = "";vector<string> list = {"abc", "def","ghi","jkl","mno","pqrs","tuv","wxyz"};void backTracking(string s, int startIndex){if (startIndex == s.size()){res.push_back(path);return;}int digits = s[startIndex]-'0'-2;for (int i = 0; i < list[digits].size();i++){path += list[digits][i];backTracking(s, startIndex+1);path.pop_back();//注意字符串移除的方式,不能使用-=}}vector<string> letterCombinations(string digits) {if (digits.size()==0) return {};backTracking(digits,0);return res;}
};

Leetcode 39-组合总数

题目描述

https://leetcode.cn/problems/combination-sum/description/

在这里插入图片描述

解题思路

class Solution {
public:vector<vector<int>> res;vector<int> path;void backTracking(vector<int>& candidates, int target, int startIndex, int sum){if (sum == target){res.push_back(path);return;}if (sum >target) return;for (int i = startIndex; i < candidates.size(); i++){path.push_back(candidates[i]);sum+=candidates[i];backTracking(candidates, target, i, sum);path.pop_back();sum-=candidates[i];}}vector<vector<int>> combinationSum(vector<int>& candidates, int target) {backTracking(candidates,target,0,0);return res;}
};

Leetcode 216-组合总数 Ⅲ

题目描述

https://leetcode.cn/problems/combination-sum-iii/description/

在这里插入图片描述

解题思路

class Solution {
public:vector<vector<int>> res;vector<int> path;void backTracking(int k, int n, int startIndex, int sum){if (sum > n) return;//剪枝操作1if (path.size() == k){if (sum == n){res.push_back(path);}return;}for (int i = startIndex; 9-i+1+path.size() >= k; i++){//剪枝操作2.保证剩余的元素个数能满足使组合个数符合k的要求path.push_back(i); sum+=i;backTracking(k, n, i+1, sum);path.pop_back();sum-=i;}}vector<vector<int>> combinationSum3(int k, int n) {backTracking(k,n, 1, 0);return res;}
};
http://www.lryc.cn/news/432886.html

相关文章:

  • 【Hadoop|MapReduce篇】MapReduce概述
  • 设置Virtualbox虚拟机共享文件夹
  • 从零开始的机器学习之旅
  • 开源还是封闭?人工智能的两难选择
  • Prometheus 服务监控
  • 建模杂谈系列252 规则的串行改并行
  • 0.ffmpeg面向对象oopc
  • KDD2024参会笔记-Day1
  • Java操作Elasticsearch的实用指南
  • 数据库系统 第42节 数据库索引简介
  • C++11 --- 智能指针
  • C#顺序万年历自写的求余函数与周位移算法
  • 【Java并发编程一】八千字详解多线程
  • CentOS 8FTP服务器
  • C++ | Leetcode C++题解之第385题迷你语法分析器
  • 【软件设计师真题】第一大题---数据流图设计
  • 系统架构的发展历程之模块化与组件化
  • 基因组学中的深度学习
  • 解决老师询问最高分数问题的编程方案
  • com.baomidou.mybatisplus.annotation.DbType 无法引入
  • 从零开始学习JVM(七)- StringTable字符串常量池
  • 数据库课程设计mysql
  • AI学习指南深度学习篇-带动量的随机梯度下降法的基本原理
  • 点餐小程序实战教程03创建应用
  • 鸿蒙自动化发布测试版本app
  • 力扣9.7
  • GPU 带宽功耗优化
  • Linux Centos 7网络配置
  • 第三天旅游线路规划
  • C++第四十七弹---深入理解异常机制:try, catch, throw全面解析