Leetcode 216.组合总和III

题目链接
思路:回溯算法
代码

class Solution {List<Integer> path = new ArrayList<>();List<List<Integer>> result = new ArrayList<>();public List<List<Integer>> combinationSum3(int k, int n) {backtracking(n, k, 0, 1);return result;}// targetSum:目标和,也就是题目中的n// k:题目中要求的k个数的集合// sum:已经收集的元素的总和,也就是path里元素的总和// startIndex:下一层for循环搜索的起始位置private void backtracking(int targetSum, int k, int sum, int startIndex) {// 剪枝:如果一层里的sum和大于了目标和,跳出递归if (sum > targetSum) {return;} if (path.size() == k) {if (targetSum == sum) {result.add(new ArrayList<>(path));}}// 剪枝:对for循环里,9 - (k - path.size()) + 1为最多能取到的下标for (int i = startIndex; i <= 9 - (k - path.size()) + 1; i++) {path.add(i);sum += i;backtracking(targetSum, k, sum, i + 1);// 回溯path.remove(path.size() - 1);sum -= i;}}
}

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

题目链接
思路:回溯算法
代码

class Solution {List<String> result = new ArrayList<>();// 用于存放每次迭代获取的字符StringBuilder sb = new StringBuilder();// 初始对应所有的数字,为了直接对应2-9,新增了两个无效的字符串""String[] numString = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};public List<String> letterCombinations(String digits) {if (digits == null || digits.length() == 0) {return result;}backtracking(digits, 0);return result;}private void backtracking(String digits, int index) {// 终止条件if (index == digits.length()) {result.add(sb.toString());return;}// 将index指向的数字转为intint digit = digits.charAt(index) - '0';// 获取数字对应的字符集String str = numString[digit];// 遍历该字符集for (int i = 0; i < str.length(); i++) {sb.append(str.charAt(i));// 递归遍历下一个字符集backtracking(digits, index + 1);// 回溯,剔除末尾元素,继续进行尝试sb.deleteCharAt(sb.length() - 1);}}
}

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

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

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

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

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

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

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

  4. day25|● 216.组合总和III ● 17.电话号码的字母组合

    day25 3.13 回溯第二天 216.组合总和III 链接: 216.组合总和III 思路:本题k相当于树的深度,9(因为整个集合就是9个数)就是树的宽度. class Solution {pri ...

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

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

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

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

  7. Day25 LeetCode 216. 组合总和 III 17. 电话号码的字母组合

    题目:216. 组合总和 III - 力扣(LeetCode) 思路: 1.递归函数参数和返回值:首先需要两个全局变量一维path数组和二维result数组,path数组用来收集路径上的元素,resu ...

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

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

  9. LeetCode 216组合总和III 17电话号码的字母组合

    文章目录 216组合总和III c++ 代码实现 python 代码实现 17.电话号码的字母组合 c++ 代码实现 python代码实现 216组合总和III 找出所有相加之和为 n 的 k 个数的 ...

最新文章

  1. 使用sqlmap 绕过防火墙进行注入测试
  2. STM32 CJSON解析说明
  3. (轉貼) Jolt 2007得獎名單 (News) (.NET)
  4. 【WebRTC---入门篇】(十二)WebRTC传输协议
  5. CodeForces413E Maze 2D
  6. SWFupload在IE9以上中的bug
  7. 19年全国数学建模比赛A题代码(简单的迭代思想)
  8. 【辨异】relation, relationship
  9. angular语言前端开发_详解使用angular-cli发布i18n多国语言Angular应用_唇印_前端开发者...
  10. 【Transfer Learning】泛化到未知域:域泛化 (Domain Generalization) 综述论文
  11. 『IT视界』 [互联网]联想裁员千人不影响国内业务 每年节约2.5亿
  12. ATECLOUD智能云测试平台,中国人自己的“LABVIEW”-测试测量软件
  13. ajax后台数据怎么返回,后台获取ajax参数 怎么返回数据
  14. 前端规范之Git工作流规范 Husky + lint-staged
  15. 微服务实施笔记(一)
  16. java设计模式中—原型模式
  17. F2FS源码分析-6.6 [其他重要数据结构以及函数] F2FS的重命名过程-f2fs_rename函数
  18. 风景照片后期调色LR预设
  19. 实战解析 Categor 对已有类进行扩展
  20. android file.renameto 不成功,android – File.renameTo()返回true,但文件尚未重命名

热门文章

  1. 初中数学四十二个几何模型_小学的行程问题和几何模型,如何为初中数学打基础...
  2. 永磁同步电机带电流补偿反馈的矢量控制
  3. 灵活用工平台的税务如何解决?
  4. FireFox不能打开招行网银的原因及解决办法
  5. 让爱呼吸| 气质星妈,与美同“形
  6. 2023河南农业大学计算机考研信息汇总
  7. 配置目标跟踪开源项目traj_gen_vis踩过的坑
  8. GameFi 增长: 如果保持游戏用户的留存
  9. 老调重提,利用SDK实现智能五子棋
  10. C语言---求符合给定条件的整数集