文章目录

  • 216组合总和III
    • c++ 代码实现
    • python 代码实现
  • 17.电话号码的字母组合
    • c++ 代码实现
    • python代码实现

216组合总和III

找出所有相加之和为 nk 个数的组合,且满足下列条件:

返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

示例 1:

输入: k = 3, n = 7
输出: [[1,2,4]]
解释:
1 + 2 + 4 = 7
没有其他符合的组合了。

示例 2:

输入: k = 3, n = 9
输出: [[1,2,6], [1,3,5], [2,3,4]]
解释:
1 + 2 + 6 = 9
1 + 3 + 5 = 9
2 + 3 + 4 = 9
没有其他符合的组合了。

示例 3:

输入: k = 4, n = 1
输出: []
解释: 不存在有效的组合。
在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。

提示:

c++ 代码实现
class Solution {public:vector<vector<int>> results;vector<int> path;void backtracking(int k, int n, int startIndex) {if (std::accumulate(path.begin(), path.end(), 0) > n) return;if (path.size() == k && std::accumulate(path.begin(), path.end(), 0) == n) {results.push_back(path);return;}// 只使用数字1到9for (int i = startIndex; i <= 9 - (k - path.size()) + 1; i++) {path.push_back(i);backtracking(k, n, i+1);path.pop_back();}}vector<vector<int>> combinationSum3(int k, int n) {backtracking(k, n, 1);return results;}
};
python 代码实现
class Solution: def combinationSum3(self, k: int, n: int) -> List[List[int]]:results = []path = []def backtracking(k, n, index):if sum(path) > n:returnif len(path) == k:if sum(path) == n:results.append(path[:])returnfor i in range(index, 10 - (k - len(path)) + 1):path.append(i)backtracking(k, n, i+1)path.pop()backtracking(k, n, 1)return results

17.电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

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

示例 1:

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

示例 2:

输入:digits = ""
输出:[]

示例 3:

输入:digits = "2"
输出:["a","b","c"]

提示:

c++ 代码实现
class Solution {public:const string letterMap[10] = {"", // 0"", // 1"abc", // 2"def", // 3"ghi", // 4"jkl", // 5"mno", // 6"pqrs", // 7"tuv", // 8"wxyz", // 9};vector<string> results;string s;void backtracking(const string& digits, int index) {if (index == digits.size()) {results.push_back(s);return;}//  将index指向的数字转为intint letterIndex = digits[index] - '0';//  取数字对应的字符集string letter = letterMap[letterIndex];for (int i = 0; i < letter.size(); i++) {s.push_back(letter[i]);backtracking(digits, index + 1);s.pop_back();}}vector<string> letterCombinations(string digits) {results.clear();s.clear();if (digits.size() == 0) {return results;}backtracking(digits, 0);return results;}
};
python代码实现
class Solution:def letterCombinations(self, digits: str) -> List[str]:letter_map = {'0': '','1': '','2': 'abc','3': 'def','4': 'ghi','5': 'jkl','6': 'mno','7': 'pqrs','8': 'tuv','9': 'wxyz'}results = []def backtracking(digits, index, letter_str):if index == len(digits):if letter_str:results.append(letter_str)returnletter_index = digits[index]letter = letter_map[letter_index]for i in range(len(letter)):letter_str += letter[i]backtracking(digits, index+1, letter_str)   letter_str = letter_str[:-1]backtracking(digits, 0, '')return results

LeetCode 216组合总和III 17电话号码的字母组合相关推荐

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

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

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

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

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

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

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

    文章目录 216.组合总和III 1.代码(AC) 2.分析 17.电话号码的字母组合 1.代码 2.分析 216.组合总和III 1.代码(AC) class Solution {List<L ...

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

    216.组合总和III 回溯的常规思路做这道题: class Solution {List<List<Integer>> list = new ArrayList<> ...

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

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

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

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

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

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

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

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

最新文章

  1. 创建线程那么容易,为什么非要让我使用线程池?(深深深入剖析)
  2. inet_ntop php,inet_ntop()
  3. 扩展筛选LightOj 1054 Efficient Pseudo Code
  4. 企业级日志收集系统——ELKstack
  5. 【数据结构与算法】之深入解析“不同路径II”的求解思路与算法示例
  6. 程序设计与算法----递归之爬楼梯问题
  7. dhcp工具_自制的树莓派网络工具集
  8. Git系列一之安装管理
  9. python实现池化操作
  10. autojs多分辨率找透明图
  11. 怎么才能编辑PDF里面的内容
  12. php 字母+数字 正则,PHP正则匹配中文字母数字正则表达式
  13. 创意分析及优化技巧 — 百度推广
  14. 《UnityAPI.Texture纹理》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Texture+mipMapBias+wrapMode+立钻哥哥++OK++)
  15. 基于stm32的100KV高压发生器 倍压电路
  16. 【5G核心网】free5GC UE安全鉴权流程源码分析
  17. 分布式一致性哈希分析
  18. 小巧时尚的机械键盘,通吃五台设备,雷柏MT510PRO键盘体验
  19. “钢铁直猿”专属,5·20硬核表白方式三连击
  20. 数据库原理与技术 作业及答案 复习用

热门文章

  1. 中文用户名改为英文只要3步复制黏贴
  2. 栈帧%ebp,%esp详解
  3. 学习OpenCV3:创建一张空白的图片并画线
  4. React Native实践之携程Moles框架
  5. 维智创始人陶闯博士:利用数字孪生空间计算供需平衡寻找最优解|元宇宙与碳中和
  6. Srpingcloud之eureka,微服架构之注册中心eureka
  7. Aop简介 Aop术语 SpringAOP
  8. 线上盲盒电商模式运营
  9. 学法减分助手PRO小程序源码
  10. PDF文件简介及PDF文档加密方法