From 87b215dd2e46588f3c97b25ba4cd2e3b15dbff61 Mon Sep 17 00:00:00 2001 From: jinbudaily <18336218010@163.com> Date: Mon, 24 Jul 2023 11:11:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=200017.=E7=94=B5=E8=AF=9D?= =?UTF-8?q?=E5=8F=B7=E7=A0=81=E7=9A=84=E5=AD=97=E6=AF=8D=E7=BB=84=E5=90=88?= =?UTF-8?q?=20=E6=8E=92=E7=89=88=E6=A0=BC=E5=BC=8F=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0017.电话号码的字母组合.md | 36 +++++++++----------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/problems/0017.电话号码的字母组合.md b/problems/0017.电话号码的字母组合.md index cf5e4520..b3ba1e5e 100644 --- a/problems/0017.电话号码的字母组合.md +++ b/problems/0017.电话号码的字母组合.md @@ -21,12 +21,12 @@ 说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 -# 算法公开课 +## 算法公开课 -**《代码随想录》算法视频公开课:[还得用回溯算法!| LeetCode:17.电话号码的字母组合](https://www.bilibili.com/video/BV1yV4y1V7Ug),相信结合视频再看本篇题解,更有助于大家对本题的理解**。 +**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)::[还得用回溯算法!| LeetCode:17.电话号码的字母组合](https://www.bilibili.com/video/BV1yV4y1V7Ug),相信结合视频再看本篇题解,更有助于大家对本题的理解**。 -# 思路 +## 思路 从示例上来说,输入"23",最直接的想法就是两层for循环遍历了吧,正好把组合的情况都输出了。 @@ -40,7 +40,7 @@ 2. 两个字母就两个for循环,三个字符我就三个for循环,以此类推,然后发现代码根本写不出来 3. 输入1 * #按键等等异常情况 -## 数字和字母如何映射 +### 数字和字母如何映射 可以使用map或者定义一个二维数组,例如:string letterMap[10],来做映射,我这里定义一个二维数组,代码如下: @@ -59,7 +59,7 @@ const string letterMap[10] = { }; ``` -## 回溯法来解决n个for循环的问题 +### 回溯法来解决n个for循环的问题 对于回溯法还不了解的同学看这篇:[关于回溯算法,你该了解这些!](https://programmercarl.com/回溯算法理论基础.html) @@ -134,9 +134,6 @@ for (int i = 0; i < letters.size(); i++) { **但是要知道会有这些异常,如果是现场面试中,一定要考虑到!** - -## C++代码 - 关键地方都讲完了,按照[关于回溯算法,你该了解这些!](https://programmercarl.com/回溯算法理论基础.html)中的回溯法模板,不难写出如下C++代码: @@ -233,7 +230,7 @@ public: 所以大家可以按照版本一来写就可以了。 -# 总结 +## 总结 本篇将题目的三个要点一一列出,并重点强调了和前面讲解过的[77. 组合](https://programmercarl.com/0077.组合.html)和[216.组合总和III](https://programmercarl.com/0216.组合总和III.html)的区别,本题是多个集合求组合,所以在回溯的搜索过程中,都有一些细节需要注意的。 @@ -241,10 +238,10 @@ public: -# 其他语言版本 +## 其他语言版本 -## Java +### Java ```Java class Solution { @@ -286,7 +283,7 @@ class Solution { } ``` -## Python +### Python 回溯 ```python class Solution: @@ -435,7 +432,7 @@ class Solution: -## Go +### Go 主要在于递归中传递下一个数字 @@ -470,7 +467,7 @@ func dfs(digits string, start int) { } ``` -## javaScript +### JavaScript ```js var letterCombinations = function(digits) { @@ -497,7 +494,7 @@ var letterCombinations = function(digits) { }; ``` -## TypeScript +### TypeScript ```typescript function letterCombinations(digits: string): string[] { @@ -531,7 +528,7 @@ function letterCombinations(digits: string): string[] { }; ``` -## Rust +### Rust ```Rust const map: [&str; 10] = [ @@ -563,7 +560,7 @@ impl Solution { } ``` -## C +### C ```c char* path; @@ -625,7 +622,7 @@ char ** letterCombinations(char * digits, int* returnSize){ } ``` -## Swift +### Swift ```swift func letterCombinations(_ digits: String) -> [String] { @@ -666,7 +663,7 @@ func letterCombinations(_ digits: String) -> [String] { } ``` -## Scala: +### Scala ```scala object Solution { @@ -702,3 +699,4 @@ object Solution { +