216.组合总和III

力扣题目链接(opens new window)

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。

说明:

  • 所有数字都是正整数。
  • 解集不能包含重复的组合。

示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]]

示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]]

代码如下:

class Solution {
private:vector<vector<int>> result; // 存放结果集vector<int> path; // 符合条件的结果// targetSum:目标和,也就是题目中的n。// k:题目中要求k个数的集合。// sum:已经收集的元素的总和,也就是path里元素的总和。// startIndex:下一层for循环搜索的起始位置。void backtracking(int targetSum, int k, int sum, int startIndex) {if (path.size() == k) {if (sum == targetSum) result.push_back(path);return; // 如果path.size() == k 但sum != targetSum 直接返回}for (int i = startIndex; i <= 9; i++) {sum += i; // 处理path.push_back(i); // 处理backtracking(targetSum, k, sum, i + 1); // 注意i+1调整startIndexsum -= i; // 回溯path.pop_back(); // 回溯}}public:vector<vector<int>> combinationSum3(int k, int n) {result.clear(); // 可以不加path.clear();   // 可以不加backtracking(n, k, 0, 1);return result;}
};

17.电话号码的字母组合

力扣题目链接(opens new window)

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例:

  • 输入:"23"
  • 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

代码如下:

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};
public:vector<string> result;string s;void backtracking(const string& digits, int index) {if (index == digits.size()) {  //当index等于数组的大小时,result.push_back(s);return;}int digit = digits[index] - '0';                    // 将index指向的数字转为intstring letters = letterMap[digit];              // 取数字对应的字符集for (int i = 0; i < letters.size(); i++) {      //比如,先搜索2,将2所对应的字符串取出字符,在下次搜索到3时,继续在2的基础上,添加字符s.push_back(letters[i]);backtracking(digits, index + 1);      s.pop_back();}}vector<string> letterCombinations(string digits) {s.clear();result.clear();if (digits.size() == 0) {return result;}backtracking(digits, 0);return result;}
};

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

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

    代码随想录算法训练营第25天 | 216. 组合总和 III,17. 电话号码的字母组合 216. 组合总和 III 此题相比较于组合 多了一个求和的条件 就可以在终止条件中添加该条件判断 加一个变量 ...

  2. Day25|组合板子|216. 组合总和 III| 17. 电话号码的字母组合

    组合板子+剪枝 216. 组合总和 III 剪枝操作? 17. 电话号码的字母组合 216. 组合总和 III class Solution {private:vector<int>tem ...

  3. 代码随想录第二十五天|组合、电话号码的字母组合

    代码随想录第二十五天|216.17不熟 Leetcode 216. 组合总和 III Leetcode 17. 电话号码的字母组合 Leetcode 216. 组合总和 III 题目链接: 组合总和 ...

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

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

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

    目录 LeeCode 216.组合总和III LeeCode 17.电话号码的字母组合 LeeCode 216.组合总和III 216. 组合总和 III - 力扣(LeetCode) 思路:本题和 ...

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

    216.组合总和III 力扣题目链接 思路 在组合的基础上加限制条件 剪枝操作 //当和大于n时,往后遍历没有意义,剪枝 if(sum>n){return; } //当剩下的元素个数不足时,剪枝 ...

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

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

  8. 代码随想录算法训练营day25| 216.组合总和III、17.电话号码的字母组合

    Leetcode 216.组合总和III 题目链接 思路:回溯算法 代码: class Solution {List<Integer> path = new ArrayList<&g ...

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

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

最新文章

  1. LeetCode OJ:Pascal's TriangleII(帕斯卡三角II)
  2. iconfont在html种颜色,iconfont+开始支持彩色图标
  3. C++ 复制构造函数
  4. Pod详解-生命周期-创建和终止
  5. 在visual studio code中配置python以及解决中文乱码问题
  6. python自定义配置文件读取_python读取和自定义配置文件的方法
  7. ajax 限制显示条数,jquery通过ajax获取数据,控制显示的数据条数
  8. 蓝桥杯2015 C语言大学B组 C/C++
  9. windows java路径问题_java 文件路径问题
  10. 在服务器上导出dmp文件,远程在服务器上导出dmp文件
  11. 自动化运维工具(ansible入门教程)
  12. vue+bootstrap项目
  13. 如何在网页浏览器中缩放网页?
  14. 信息系统项目管理师考试怎么复习最有效?
  15. 五险一金 ,即将毕业的每个人都看看吧
  16. 解决html5手机端滑动卡顿的现象
  17. 全网首份pyQt6飞机大战
  18. kaggle 2018 data science bowl____一次失败的 kaggle 项目参与经历及反思总结
  19. linux快速入门 快捷高效学习方法
  20. Asp.Net初学小结

热门文章

  1. 喝奶粉的宝宝一天喝多少水 奶粉喂养的宝宝每天要喝多少水
  2. golang解析支付宝公钥证书
  3. android 自定义旋转转盘(类似抽奖转盘)
  4. Java系列之:生成Json字符串
  5. ubuntu 16.04 gtx1060 显卡安装【转】
  6. Failed to convert 、 to ACE; string contains a disallowed character
  7. 成功解决在word文件的表格中当输文字时自动出现加红色和下划线
  8. mysql 清理表数据的方法
  9. 忘记路由器密码,如何恢复,简单明了
  10. 联想小新Air14怎么关闭f1-f12快捷键设置