代码随想录算法训练营第二十五天|216.组合总和III 17.电话号码的字母组合
目录
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.电话号码的字母组合相关推荐
- 代码随想录算法训练营第二十五天|216.组合总和III、17.电话号码的字母组合
LeetCode 216.组合总和III 链接:216. 组合总和 III 思路: 这道题目与77. 组合仅有一点不同,就是这道题目找到的组合的总和需要满足额外的条件.所以在递归终止条件里增加了一个条 ...
- 代码随想录第二十五天|261.组合总和、17.电话号码的字母组合
261.组合总和 找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. class Solution { private:vector& ...
- 代码随想录算法训练营第24天25天|● 77. 组合● 216.组合总和III ● 17.电话号码的字母组合
77组合 看完题后的思路 void f(数组,startIndex) 递归终止 if(startIndex数组长度||path.sizek){ if(path.size==k){ 加入} } 递归 f ...
- 代码随想录第25天|216.组合总和III ● 17.电话号码的字母组合
216.组合总和Ⅲ 回溯三部曲 确定递归函数参数 需要一维数组path来存放符合条件的结果,二维数组result来存放结果集. 接下来还需要如下参数: targetSum(int)目标和,也就是题目中 ...
- 攻克代码随想录Day25 | 216. 组合总和 III | 17. 电话号码的字母组合
216. 组合总和 III 在该题中,题目的整体思路与之前的77. 组合思路是相似的.但在本体中,我选择从1-9遍历每一种可能性.然后将与k相等的组合进行判定,若之和与n相等,则将其push进去,否则 ...
- 【代码随想录二刷】day 25 | 216.组合总和III 17.电话号码的字母组合
二刷主要记录理解不一样的题 一刷地址:day25 今日题目:中等 组合总和III :注意剪枝操作:①sum>n:②path.size()>k class Solution {LinkedL ...
- 代码随想录第22天 | ● 216.组合总和III ● 17.电话号码的字母组合
216.组合总和III /*** @param {number} k* @param {number} n* @return {number[][]}*/ let path = []; let roa ...
- 代码随想录算法训练营第十五天 | 层序遍历 10,226.翻转二叉树,101.对称二叉树 2
代码随想录算法训练营第十五天 | 层序遍历 10,226.翻转二叉树,101.对称二叉树 2 1.1 层序遍历 10 1.1.1 102.二叉树的层序遍历 思路: 通过队列实现 class Solut ...
- 代码随想录训练营第25天|216.组合总和 Ⅲ、17.电话号码的字母组合
216.组合总和 Ⅲ.17.电话号码的字母组合 216.组合总和 Ⅲ 与总和问题相似,组合总和Ⅲ无非就是多了一个判断和的操作,因此,也会产生一些剪枝操作. 很显然,同组合一样,我们创建两个全部变量一维 ...
最新文章
- 【Harvest源码分析】GetF0CandidateContour函数
- SQL Server 问题之 排序规则(collation)冲突
- Python字符串前加f、r、b、u的不同用法
- IA32中栈帧结构图
- .NET 数据库缓存依赖策略实现
- 脚本语言php是什么意思,php是什么脚本语言
- 亿些模板【字符串+其他】
- 个人博客网页设计_不会代码如何打造个人博客?你需要这个简单、免费的搭建工具...
- ElasticSearch学习(五):数据导入之Logstash
- omv搭建php,家用NAS系统openmediavault插件开发
- linux rpm安装简要说明
- goldfish安装
- 坯子库无法一键安装插件没用_坯子插件库的下载地址、安装以及运用办法
- 四阶魔方初级玩法公式
- 芯片——摩尔定律的传奇(下)
- 【开发工具】Office Tool Plus 安装 Office
- C语言问题:0xC0000005: 写入位置 0xFFFFFFCC 时发生访问冲突。
- 【冰糖R语言】Shiny简单笔记
- gcc: buildin函数: __builtin_unreachable __builtin_constant_p;__atomic_load_n
- linux给音乐添加封面,利用ffmpeg读取音乐文件的专辑信息(包括专辑封面图片)