目录

LeeCode 216.组合总和III

LeeCode 17.电话号码的字母组合


LeeCode 216.组合总和III

216. 组合总和 III - 力扣(LeetCode)

思路:本题和 77.组合 区别之一就是集合固定的就是9个数[1,...,9],所以for循环固定i<=9;处理过程为 path收集每次选取的元素,sum统计path里元素的总和。

剪枝:如果已选元素总和已经大于n了,直接剪掉。

private:vector<int> path;vector<vector<int>> result;void backtracking(int targetSum, int k, int sum, int startIndex) {if (sum > targetSum) { //剪枝操作 return;}if (path.size() == k) {if (sum == targetSum) result.push_back(path);return;} for (int i = startIndex; i <= 9 - (k - path.size()) + 1; i++) {sum += i;path.push_back(i);backtracking(targetSum, k, sum, i + 1);sum -= i;path.pop_back();}    }
public:vector<vector<int>> combinationSum3(int k, int n) {backtracking(n, k, 0, 1);return result;}
};

LeeCode 17.电话号码的字母组合

17. 电话号码的字母组合 - 力扣(LeetCode)

思路:

数字和字母的映射通过定义一个二维数组来实现。遍历的深度,就是输入字符串的长度,叶子节点就是要收集的结果,定义一个字符串s来收集叶子节点的结果,一个字符串数组result保存起来,index用来遍历digits(题目中给出的数字字符串),同时index也表示树的深度。

输入1 * #按键等等异常情况需要额外考虑。

class Solution {
private:const string letterMap[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz",};
public:vector<string> letterCombinations(string digits) {s.clear();result.clear();if (digits.size() == 0) {return result;}backtracking(digits, 0);return result;}string s;vector<string> result;void backtracking(const string& digits, int index) {if (index == digits.size()) {result.push_back(s);return;}int digit = digits[index] - '0';string letters = letterMap[digit];for (int i = 0; i < letters.size(); i++) {s.push_back(letters[i]);backtracking(digits, index + 1);s.pop_back();}}
};

代码随想录算法训练营第二十五天|216.组合总和III 17.电话号码的字母组合相关推荐

  1. 代码随想录算法训练营第二十五天|216.组合总和III、17.电话号码的字母组合

    LeetCode 216.组合总和III 链接:216. 组合总和 III 思路: 这道题目与77. 组合仅有一点不同,就是这道题目找到的组合的总和需要满足额外的条件.所以在递归终止条件里增加了一个条 ...

  2. 代码随想录第二十五天|261.组合总和、17.电话号码的字母组合

    261.组合总和 找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. class Solution { private:vector& ...

  3. 代码随想录算法训练营第24天25天|● 77. 组合● 216.组合总和III ● 17.电话号码的字母组合

    77组合 看完题后的思路 void f(数组,startIndex) 递归终止 if(startIndex数组长度||path.sizek){ if(path.size==k){ 加入} } 递归 f ...

  4. 代码随想录第25天|216.组合总和III ● 17.电话号码的字母组合

    216.组合总和Ⅲ 回溯三部曲 确定递归函数参数 需要一维数组path来存放符合条件的结果,二维数组result来存放结果集. 接下来还需要如下参数: targetSum(int)目标和,也就是题目中 ...

  5. 攻克代码随想录Day25 | 216. 组合总和 III | 17. 电话号码的字母组合

    216. 组合总和 III 在该题中,题目的整体思路与之前的77. 组合思路是相似的.但在本体中,我选择从1-9遍历每一种可能性.然后将与k相等的组合进行判定,若之和与n相等,则将其push进去,否则 ...

  6. 【代码随想录二刷】day 25 | 216.组合总和III 17.电话号码的字母组合

    二刷主要记录理解不一样的题 一刷地址:day25 今日题目:中等 组合总和III :注意剪枝操作:①sum>n:②path.size()>k class Solution {LinkedL ...

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

    216.组合总和III /*** @param {number} k* @param {number} n* @return {number[][]}*/ let path = []; let roa ...

  8. 代码随想录算法训练营第十五天 | 层序遍历 10,226.翻转二叉树,101.对称二叉树 2

    代码随想录算法训练营第十五天 | 层序遍历 10,226.翻转二叉树,101.对称二叉树 2 1.1 层序遍历 10 1.1.1 102.二叉树的层序遍历 思路: 通过队列实现 class Solut ...

  9. 代码随想录训练营第25天|216.组合总和 Ⅲ、17.电话号码的字母组合

    216.组合总和 Ⅲ.17.电话号码的字母组合 216.组合总和 Ⅲ 与总和问题相似,组合总和Ⅲ无非就是多了一个判断和的操作,因此,也会产生一些剪枝操作. 很显然,同组合一样,我们创建两个全部变量一维 ...

最新文章

  1. 【Harvest源码分析】GetF0CandidateContour函数
  2. SQL Server 问题之 排序规则(collation)冲突
  3. Python字符串前加f、r、b、u的不同用法
  4. IA32中栈帧结构图
  5. .NET 数据库缓存依赖策略实现
  6. 脚本语言php是什么意思,php是什么脚本语言
  7. 亿些模板【字符串+其他】
  8. 个人博客网页设计_不会代码如何打造个人博客?你需要这个简单、免费的搭建工具...
  9. ElasticSearch学习(五):数据导入之Logstash
  10. omv搭建php,家用NAS系统openmediavault插件开发
  11. linux rpm安装简要说明
  12. goldfish安装
  13. 坯子库无法一键安装插件没用_坯子插件库的下载地址、安装以及运用办法
  14. 四阶魔方初级玩法公式
  15. 芯片——摩尔定律的传奇(下)
  16. 【开发工具】Office Tool Plus 安装 Office
  17. C语言问题:0xC0000005: 写入位置 0xFFFFFFCC 时发生访问冲突。
  18. 【冰糖R语言】Shiny简单笔记
  19. gcc: buildin函数: __builtin_unreachable __builtin_constant_p;__atomic_load_n
  20. linux给音乐添加封面,利用ffmpeg读取音乐文件的专辑信息(包括专辑封面图片)

热门文章

  1. 浅析js中e.target和e.currentTarget的区别
  2. HDU-7092 仓颉造数
  3. java快捷键 --_java常用的快捷键
  4. eplan图纸怎么发给别人_在EPLAN中怎么将别人的图框导出,然后自己修改
  5. Spring Cloud入门-Config分布式配置中心(Hoxton版本)
  6. 2022年rust杂记
  7. 2021015979李庚奇实验三
  8. Android相关资源下载
  9. 《Maven实战》百度网盘
  10. Altium 中原理图里的交叉结点颜色修改方法