代码随想录算法训练营day25| 216.组合总和III、17.电话号码的字母组合
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.电话号码的字母组合相关推荐
- 代码随想录第25天|216.组合总和III ● 17.电话号码的字母组合
216.组合总和Ⅲ 回溯三部曲 确定递归函数参数 需要一维数组path来存放符合条件的结果,二维数组result来存放结果集. 接下来还需要如下参数: targetSum(int)目标和,也就是题目中 ...
- 代码随想录第22天 | ● 216.组合总和III ● 17.电话号码的字母组合
216.组合总和III /*** @param {number} k* @param {number} n* @return {number[][]}*/ let path = []; let roa ...
- 攻克代码随想录Day25 | 216. 组合总和 III | 17. 电话号码的字母组合
216. 组合总和 III 在该题中,题目的整体思路与之前的77. 组合思路是相似的.但在本体中,我选择从1-9遍历每一种可能性.然后将与k相等的组合进行判定,若之和与n相等,则将其push进去,否则 ...
- day25|● 216.组合总和III ● 17.电话号码的字母组合
day25 3.13 回溯第二天 216.组合总和III 链接: 216.组合总和III 思路:本题k相当于树的深度,9(因为整个集合就是9个数)就是树的宽度. class Solution {pri ...
- 代码随想录算法训练营第24天25天|● 77. 组合● 216.组合总和III ● 17.电话号码的字母组合
77组合 看完题后的思路 void f(数组,startIndex) 递归终止 if(startIndex数组长度||path.sizek){ if(path.size==k){ 加入} } 递归 f ...
- 代码随想录算法训练营第二十五天|216.组合总和III 17.电话号码的字母组合
目录 LeeCode 216.组合总和III LeeCode 17.电话号码的字母组合 LeeCode 216.组合总和III 216. 组合总和 III - 力扣(LeetCode) 思路:本题和 ...
- Day25 LeetCode 216. 组合总和 III 17. 电话号码的字母组合
题目:216. 组合总和 III - 力扣(LeetCode) 思路: 1.递归函数参数和返回值:首先需要两个全局变量一维path数组和二维result数组,path数组用来收集路径上的元素,resu ...
- Day25|组合板子|216. 组合总和 III| 17. 电话号码的字母组合
组合板子+剪枝 216. 组合总和 III 剪枝操作? 17. 电话号码的字母组合 216. 组合总和 III class Solution {private:vector<int>tem ...
- LeetCode 216组合总和III 17电话号码的字母组合
文章目录 216组合总和III c++ 代码实现 python 代码实现 17.电话号码的字母组合 c++ 代码实现 python代码实现 216组合总和III 找出所有相加之和为 n 的 k 个数的 ...
最新文章
- 使用sqlmap 绕过防火墙进行注入测试
- STM32 CJSON解析说明
- (轉貼) Jolt 2007得獎名單 (News) (.NET)
- 【WebRTC---入门篇】(十二)WebRTC传输协议
- CodeForces413E Maze 2D
- SWFupload在IE9以上中的bug
- 19年全国数学建模比赛A题代码(简单的迭代思想)
- 【辨异】relation, relationship
- angular语言前端开发_详解使用angular-cli发布i18n多国语言Angular应用_唇印_前端开发者...
- 【Transfer Learning】泛化到未知域:域泛化 (Domain Generalization) 综述论文
- 『IT视界』 [互联网]联想裁员千人不影响国内业务 每年节约2.5亿
- ATECLOUD智能云测试平台,中国人自己的“LABVIEW”-测试测量软件
- ajax后台数据怎么返回,后台获取ajax参数 怎么返回数据
- 前端规范之Git工作流规范 Husky + lint-staged
- 微服务实施笔记(一)
- java设计模式中—原型模式
- F2FS源码分析-6.6 [其他重要数据结构以及函数] F2FS的重命名过程-f2fs_rename函数
- 风景照片后期调色LR预设
- 实战解析 Categor 对已有类进行扩展
- android file.renameto 不成功,android – File.renameTo()返回true,但文件尚未重命名