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

代码随想录22| 216.组合总和III, 17.电话号码的字母组合

216.组合总和III

题目链接/文章讲解:链接地址
视频讲解:链接地址

代码思路:回溯三部曲:
1.确定函数参数:n,k,sum,startIndex;
2.结束条件,path == k,并且如果sum==n 结束递归
3.递归回溯逻辑。

class Solution {vector<int> path;vector<vector<int>> result; private:void back_tracking(int k, int n, int startIndex, int sum) {if (path.size() == k) {if (sum == n) result.push_back(path);return;}for (int i = startIndex; i <= 9; i++) {sum += i;path.push_back(i);back_tracking(k, n, i + 1, sum);sum -= i;path.pop_back();}}public:vector<vector<int>> combinationSum3(int k, int n) {int sum;back_tracking(k, n, 1, sum);return  result;}
};

17.电话号码的字母组合

题目链接/文章讲解:链接地址
视频讲解:链接地址

代码思路:传入参数:输入的数字,第几个数字的索引
结束条件:第几个数字的索引等于输入数字的长度
递归回溯:先找到创建的数字Map的索引,然后找到对应数字下的字符进行遍历递归。

class Solution {
private:const string letterMap[10] = {"", // 0"", // 1"abc", // 2"def", // 3"ghi", // 4"jkl", // 5"mno", // 6"pqrs", // 7"tuv", // 8"wxyz", // 9};string s;vector<string> result; void back_traking(string digits, int index) {if (index == digits.size()) {result.push_back(s);return;}//转数字int numIndex = digits[index] - '0';//映射数字对应的字符string stringNum = letterMap[numIndex];for (int i = 0; i < stringNum.size(); i++) {s.push_back(stringNum[i]);back_traking(digits, index + 1);s.pop_back();}}
public:vector<string> letterCombinations(string digits) {if (digits == "") return result;back_traking(digits,0);return result;}
};
http://www.lryc.cn/news/137131.html

相关文章:

  • ITIL4—战略与指导
  • 【Spring】Spring循环依赖(超重要!!)
  • 数据分析之路应该是就此开启了
  • win10如何配置jdk环境变量
  • pm4py使用指南(非机翻)
  • ChatGPT帮助提升工作效率和质量:完成时间下降40%,质量评分上升 18%
  • 第二章 搜索
  • transform_train.json文件解析
  • Wlan——锐捷零漫游网络解决方案以及相关配置
  • 分布式锁系列之zookeeper分布式锁和mysql分布式锁
  • Ubuntu部署PHP7.4
  • WPF中的数据转换-StringFormat
  • java.lang.UnsupportedOperationException解决方法
  • docker for window更改到非系统盘的使用记录
  • day 38 | ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ
  • 写得了代码,焊得了板!嵌入式开发工程师必修之代码管理方案(中)
  • Interlij IDEA 运行 ruoyi 后端项目。错误: 找不到或无法加载主类 com.ruoyi.auth.RuoYiAuthApplication
  • 相机设置报错记录
  • Vue3中搜索表单的二次封装
  • 百度23Q2财报最新发布:营收利润加速增长,AI+生态战略渐显规模
  • 一个pdf文件分割成两个
  • Android 保存图片
  • Android相机-架构
  • 从C语言到C++_33(C++11_上)initializer_list+右值引用+完美转发+移动构造/赋值
  • 如何在Linux系统中处理PDF文件?
  • SpringBoot实现热部署/加载
  • 我是如何使用Spring Retry减少1000 行代码
  • ARM开发(stm32 cortex-A7核IIC实验)
  • 「Java」《Java集合框架详解:掌握常用集合类,提升开发效率》
  • 游戏出海需知:Admob游戏广告变现策略