diff --git a/README.md b/README.md index 5ce7c1d3a9..72904fa2d1 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,8 @@


- 本项目包含了技术面试必备的基础知识,浅显易懂,你不需要花很长的时间去阅读和理解成堆的技术书籍就可以快速掌握这些知识,从而节省宝贵的面试复习时间。你也可以阅读 面试进阶指南,包含了学习指导和面试技巧,让你更轻松拿到满意的 Offer。 + 本项目包含了技术面试必备的基础知识,内容浅显易懂,你不需要花很长的时间去阅读和理解成堆的技术书籍就可以快速掌握这些知识,从而节省宝贵的面试复习时间。推荐使用 https://cyc2018.github.io/CS-Notes 进行阅读,从而获得更好的阅读体验。你也可以订阅 面试进阶指南,包含了学习指导和面试技巧,让你更轻松拿到满意的 Offer。欢迎关注公众号“CyC2018”,每天发布一道高频基础知识面试题,让你在闲暇时间也能学习进步!公众号也提供了一个学习打卡圈子,记录你每天的学习收获,见证你的成长!

+
@@ -87,35 +88,31 @@ 为大家提供一个学习交流平台,在这里你可以自由地讨论技术问题。 -
+ -### 关于我 +### 后端面试指南 - - -    - -    - - - + + ### 排版 -笔记内容按照 [文文案排版指北](https://github.com/sparanoid/chinese-copywriting-guidelines) 进行排版,以保证内容的可读性。笔记不使用 `![]()` 这种方式来引用图片,而是用 `` 标签。一方面是为了能够控制图片以合适的大小显示,另一方面是因为 GFM 不支持 `
![]()
` 让图片居中显示,只能使用 `
` 达到居中的效果。 +笔记内容按照 [中文文案排版指北](https://github.com/sparanoid/chinese-copywriting-guidelines) 进行排版,以保证内容的可读性。 + +不使用 `![]()` 这种方式来引用图片,而是用 `` 标签。一方面是为了能够控制图片以合适的大小显示,另一方面是因为 [GFM](https://github.github.com/gfm/) 不支持 `
![]()
` 这种方法让图片居中显示,只能使用 `
` 达到居中的效果。 -我将自己实现的文档排版功能提取出来,放在 Github Page 中,无需下载安装即可免费使用:[Text-Typesetting](https://github.com/CyC2018/Text-Typesetting)。 +在线排版工具:[Text-Typesetting](https://github.com/CyC2018/Text-Typesetting)。 ### 上传方案 -我在本地使用为知笔记软件进行书写,为了方便将本地笔记内容上传到 Github 上,实现了一整套自动化上传方案,包括文本文件的导出、提取图片、Markdown 文档转换、Git 同步。进行 Markdown 文档转换是因为 Github 使用的 GFM 不支持 MathJax 公式和 TOC 标记,所以需要替换 MathJax 公式为 CodeCogs 的云服务和重新生成 TOC 目录。 +为了方便将本地笔记内容上传到 Github 上,实现了一整套自动化上传方案,包括提取图片、Markdown 文档转换、Git 同步。进行 Markdown 文档转换是因为 Github 使用的 GFM 不支持 MathJax 公式和 TOC 标记,所以需要替换 MathJax 公式为 CodeCogs 的云服务和重新生成 TOC 目录。 -我将自己实现文档转换功能提取出来,方便大家在需要将本地 Markdown 上传到 Github,或者制作项目 README 文档时生成目录时使用:[GFM-Converter](https://github.com/CyC2018/GFM-Converter)。 +GFM 转换工具:[GFM-Converter](https://github.com/CyC2018/GFM-Converter)。 ### License -学习笔记不是从网上到处拼凑而来,除了少部分引用书上和技术文档的原文,其余都是我的原创。在您引用本仓库内容或者对内容进行修改演绎时,请署名并以相同方式共享,谢谢。 +本仓库内容将网上的资料随意拼凑而来,除了少部分引用书上和技术文档的原文,其余都是我的原创。在您引用本仓库内容或者对内容进行修改演绎时,请署名并以相同方式共享,谢谢。 知识共享许可协议 diff --git "a/assets/\345\205\254\344\274\227\345\217\267.jpg" "b/assets/\345\205\254\344\274\227\345\217\267.jpg" new file mode 100644 index 0000000000..ab57e6b2dd Binary files /dev/null and "b/assets/\345\205\254\344\274\227\345\217\267.jpg" differ diff --git "a/assets/\345\205\254\344\274\227\345\217\2671.jpg" "b/assets/\345\205\254\344\274\227\345\217\2671.jpg" new file mode 100644 index 0000000000..14e98bfca0 Binary files /dev/null and "b/assets/\345\205\254\344\274\227\345\217\2671.jpg" differ diff --git a/docs/README.md b/docs/README.md index aec666b14c..79619522e3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,5 +1,5 @@ -> [点击阅读面试进阶指南](https://github.com/CyC2018/Backend-Interview-Guide) +> [点击订阅面试进阶指南](https://xiaozhuanlan.com/CyC2018) ## ✏️ 算法 @@ -54,3 +54,7 @@ > [Docker](notes/Docker.md)
> [正则表达式](notes/正则表达式.md)
> [构建工具](notes/构建工具.md) + +欢迎关注 公众号 “CyC2018” ,每天发布一道高频基础知识面试题,让你在闲暇时间也能学习进步!公众号也提供了一个学习打卡圈子,记录你每天的学习收获,见证你的成长! + +![](https://github.com/CyC2018/CS-Notes/raw/master/assets/%E5%85%AC%E4%BC%97%E5%8F%B7.jpg) diff --git a/docs/_coverpage.md b/docs/_coverpage.md index 07dc56c6a3..cc831c7e16 100644 --- a/docs/_coverpage.md +++ b/docs/_coverpage.md @@ -1,8 +1,8 @@ - + # CS-Notes -- 本项目包含了技术面试必备的基础知识,浅显易懂,你不需要花很长的时间去阅读和理解成堆的技术书籍就可以快速掌握这些知识,从而节省宝贵的面试复习时间。你也可以阅读 面试进阶指南,包含了学习指导和面试技巧,让你更轻松拿到满意的 Offer。 +- 本项目包含了技术面试必备的基础知识,内容浅显易懂,你不需要花很长的时间去阅读和理解成堆的技术书籍就可以快速掌握这些知识,从而节省宝贵的面试复习时间。你也可以订阅 面试进阶指南,包含了学习指导和面试技巧,让你更轻松拿到满意的 Offer。欢迎关注 公众号“CyC2018” ,每天发布一道高频基础知识面试题,让你在闲暇时间也能学习进步!公众号也提供了一个学习打卡圈子,记录你每天的学习收获,见证你的成长! Site View : diff --git a/docs/index.html b/docs/index.html index b7ab10e27b..58461a289f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -42,7 +42,7 @@ - + @@ -64,4 +64,4 @@ - \ No newline at end of file + diff --git a/docs/notes/Git.md b/docs/notes/Git.md index aeb88045ef..6cd8a82945 100644 --- a/docs/notes/Git.md +++ b/docs/notes/Git.md @@ -19,6 +19,8 @@ Git 属于分布式版本控制系统,而 SVN 属于集中式。 +

+ 集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。 集中式版本控制有安全性问题,当中心服务器挂了所有人都没办法工作了。 @@ -35,49 +37,49 @@ Github 就是一个中心服务器。 # 工作流 -

- 新建一个仓库之后,当前目录就成为了工作区,工作区下有一个隐藏目录 .git,它属于 Git 的版本库。 -Git 版本库有一个称为 stage 的暂存区,还有自动创建的 master 分支以及指向分支的 HEAD 指针。 +Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本库,History 中存有所有分支,使用一个 HEAD 指针指向当前分支。 -

+

- git add files 把文件的修改添加到暂存区 - git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了 - git reset -- files 使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files - git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改 -

+

可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中。 - git commit -a 直接把所有文件的修改添加到暂存区然后执行提交 - git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作 +

+ # 分支实现 使用指针将每个提交连接成一条时间线,HEAD 指针指向当前分支指针。 -

+

新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支表示新分支成为当前分支。 -

+

每次提交只会让当前分支指针向前移动,而其它分支指针不会移动。 -

+

合并分支也只需要改变指针即可。 -

+

# 冲突 当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。 -

+

Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。 @@ -99,7 +101,7 @@ Creating a new branch is quick AND simple. $ git merge --no-ff -m "merge with no-ff" dev ``` -

+

# 分支管理策略 diff --git a/docs/notes/HTTP.md b/docs/notes/HTTP.md index ef821d3dd0..92f1846bca 100644 --- a/docs/notes/HTTP.md +++ b/docs/notes/HTTP.md @@ -35,11 +35,11 @@ * [多部分对象集合](#多部分对象集合) * [虚拟主机](#虚拟主机) * [通信数据转发](#通信数据转发) -* [六、HTTPs](#六https) +* [六、HTTPS](#六https) * [加密](#加密) * [认证](#认证) * [完整性保护](#完整性保护) - * [HTTPs 的缺点](#https-的缺点) + * [HTTPS 的缺点](#https-的缺点) * [七、HTTP/2.0](#七http20) * [HTTP/1.x 缺陷](#http1x-缺陷) * [二进制分帧层](#二进制分帧层) @@ -63,11 +63,7 @@ URI 包含 URL 和 URN。 -- URI(Uniform Resource Identifier,统一资源标识符) -- URL(Uniform Resource Locator,统一资源定位符) -- URN(Uniform Resource Name,统一资源名称) - -

+

## 请求和响应报文 @@ -650,7 +646,7 @@ HTTP/1.1 使用虚拟主机技术,使得一台服务器拥有多个域名, 使用 SSL 等加密手段,在客户端和服务器之间建立一条安全的通信线路。 -# 六、HTTPs +# 六、HTTPS HTTP 有以下安全性问题: @@ -658,9 +654,9 @@ HTTP 有以下安全性问题: - 不验证通信方的身份,通信方的身份有可能遭遇伪装; - 无法证明报文的完整性,报文有可能遭篡改。 -HTTPs 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPs 使用了隧道进行通信。 +HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。 -通过使用 SSL,HTTPs 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。 +通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。

@@ -688,9 +684,9 @@ HTTPs 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)

-### 3. HTTPs 采用的加密方式 +### 3. HTTPS 采用的加密方式 -HTTPs 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率。(下图中的 Session Key 就是对称密钥) +HTTPS 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率。(下图中的 Session Key 就是对称密钥)

@@ -702,7 +698,7 @@ HTTPs 采用混合的加密机制,使用非对称密钥加密用于传输对 服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。 -进行 HTTPs 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。 +进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。

@@ -712,9 +708,9 @@ SSL 提供报文摘要功能来进行完整性保护。 HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生了篡改。 -HTTPs 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。 +HTTPS 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。 -## HTTPs 的缺点 +## HTTPS 的缺点 - 因为需要进行加密解密等过程,因此速度会更慢; - 需要支付证书授权的高额费用。 diff --git "a/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" "b/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" index c5720da679..b2a5fe6945 100644 --- "a/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" +++ "b/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" @@ -31,7 +31,7 @@ # 一、运行时数据区域 -

+

## 程序计数器 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243.md" "b/docs/notes/Leetcode \351\242\230\350\247\243.md" index 7687a4d42e..4753c3d52c 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243.md" @@ -403,8 +403,13 @@ public List topKFrequent(int[] nums, int k) { } List topK = new ArrayList<>(); for (int i = buckets.length - 1; i >= 0 && topK.size() < k; i--) { - if (buckets[i] != null) { + if (buckets[i] == null) { + continue; + } + if (buckets[i].size() <= (k - topK.size())) { topK.addAll(buckets[i]); + } else { + topK.addAll(buckets[i].subList(0, k - topK.size())); } } return topK; @@ -3139,37 +3144,6 @@ private int findTargetSumWays(int[] nums, int start, int S) { } ``` -**字符串按单词列表分割** - -[139. Word Break (Medium)](https://leetcode.com/problems/word-break/description/) - -```html -s = "leetcode", -dict = ["leet", "code"]. -Return true because "leetcode" can be segmented as "leet code". -``` - -dict 中的单词没有使用次数的限制,因此这是一个完全背包问题。 - -0-1 背包和完全背包在实现上的不同之处是,0-1 背包对物品的迭代是在最外层,而完全背包对物品的迭代是在最里层。 - -```java -public boolean wordBreak(String s, List wordDict) { - int n = s.length(); - boolean[] dp = new boolean[n + 1]; - dp[0] = true; - for (int i = 1; i <= n; i++) { - for (String word : wordDict) { // 完全一个物品可以使用多次 - int len = word.length(); - if (len <= i && word.equals(s.substring(i - len, i))) { - dp[i] = dp[i] || dp[i - len]; - } - } - } - return dp[n]; -} -``` - **01 字符构成最多的字符串** [474. Ones and Zeroes (Medium)](https://leetcode.com/problems/ones-and-zeroes/description/) @@ -3228,23 +3202,89 @@ return -1. - 物品大小:面额 - 物品价值:数量 -因为硬币可以重复使用,因此这是一个完全背包问题。 +因为硬币可以重复使用,因此这是一个完全背包问题。完全背包只需要将 0-1 背包中逆序遍历 dp 数组改为正序遍历即可。 ```java public int coinChange(int[] coins, int amount) { - if (coins == null || coins.length == 0) { + if (amount == 0 || coins == null || coins.length == 0) { return 0; } - int[] minimum = new int[amount + 1]; - Arrays.fill(minimum, amount + 1); - minimum[0] = 0; - Arrays.sort(coins); - for (int i = 1; i <= amount; i++) { - for (int j = 0; j < coins.length && coins[j] <= i; j++) { - minimum[i] = Math.min(minimum[i], minimum[i - coins[j]] + 1); + int[] dp = new int[amount + 1]; + for (int coin : coins) { + for (int i = coin; i <= amount; i++) { //将逆序遍历改为正序遍历 + if (i == coin) { + dp[i] = 1; + } else if (dp[i] == 0 && dp[i - coin] != 0) { + dp[i] = dp[i - coin] + 1; + } else if (dp[i - coin] != 0) { + dp[i] = Math.min(dp[i], dp[i - coin] + 1); + } } } - return minimum[amount] > amount ? -1 : minimum[amount]; + return dp[amount] == 0 ? -1 : dp[amount]; +} +``` + +**找零钱的硬币数组合** + +[518\. Coin Change 2 (Medium)](https://leetcode.com/problems/coin-change-2/description/) + +```text-html-basic +Input: amount = 5, coins = [1, 2, 5] +Output: 4 +Explanation: there are four ways to make up the amount: +5=5 +5=2+2+1 +5=2+1+1+1 +5=1+1+1+1+1 +``` + +完全背包问题,使用 dp 记录可达成目标的组合数目。 + +```java +public int change(int amount, int[] coins) { + if (amount == 0 || coins == null || coins.length == 0) { + return 0; + } + int[] dp = new int[amount + 1]; + dp[0] = 1; + for (int coin : coins) { + for (int i = coin; i <= amount; i++) { + dp[i] += dp[i - coin]; + } + } + return dp[amount]; +} +``` + +**字符串按单词列表分割** + +[139. Word Break (Medium)](https://leetcode.com/problems/word-break/description/) + +```html +s = "leetcode", +dict = ["leet", "code"]. +Return true because "leetcode" can be segmented as "leet code". +``` + +dict 中的单词没有使用次数的限制,因此这是一个完全背包问题。该问题涉及到字典中单词的使用顺序,因此可理解为涉及顺序的完全背包问题。 + +求解顺序的完全背包问题时,对物品的迭代应该放在最里层。 + +```java +public boolean wordBreak(String s, List wordDict) { + int n = s.length(); + boolean[] dp = new boolean[n + 1]; + dp[0] = true; + for (int i = 1; i <= n; i++) { + for (String word : wordDict) { // 对物品的迭代应该放在最里层 + int len = word.length(); + if (len <= i && word.equals(s.substring(i - len, i))) { + dp[i] = dp[i] || dp[i - len]; + } + } + } + return dp[n]; } ``` @@ -3270,7 +3310,7 @@ Note that different sequences are counted as different combinations. Therefore the output is 7. ``` -完全背包。 +涉及顺序的完全背包。 ```java public int combinationSum4(int[] nums, int target) { @@ -4031,7 +4071,7 @@ public int maximumProduct(int[] nums) { 链表是空节点,或者有一个值和一个指向下一个链表的指针,因此很多链表问题可以用递归来处理。 -**找出两个链表的交点** +**找出两个链表的交点** Annotation:链表问题可以多关注一下路径长度的分析,结合快慢指针来思考 [160. Intersection of Two Linked Lists (Easy)](https://leetcode.com/problems/intersection-of-two-linked-lists/description/) diff --git "a/docs/notes/Leetcode-Database \351\242\230\350\247\243.md" "b/docs/notes/Leetcode-Database \351\242\230\350\247\243.md" index 33877bb356..629aba3949 100644 --- "a/docs/notes/Leetcode-Database \351\242\230\350\247\243.md" +++ "b/docs/notes/Leetcode-Database \351\242\230\350\247\243.md" @@ -497,7 +497,7 @@ https://leetcode.com/problems/customers-who-never-order/description/ ## Description -Curstomers 表: +Customers 表: ```html +----+-------+ diff --git a/docs/notes/pics/0f9b9d2a-c5cc-4a3f-b138-2c1035950f39_200.png b/docs/notes/pics/0f9b9d2a-c5cc-4a3f-b138-2c1035950f39_200.png new file mode 100644 index 0000000000..0b4a58384a Binary files /dev/null and b/docs/notes/pics/0f9b9d2a-c5cc-4a3f-b138-2c1035950f39_200.png differ diff --git a/docs/notes/pics/11a786f0-5e02-46a6-92f0-f302c9cf6ca3_200.png b/docs/notes/pics/11a786f0-5e02-46a6-92f0-f302c9cf6ca3_200.png new file mode 100644 index 0000000000..5368338645 Binary files /dev/null and b/docs/notes/pics/11a786f0-5e02-46a6-92f0-f302c9cf6ca3_200.png differ diff --git a/docs/notes/pics/13783e94-b481-4aea-9fa2-9d1973abd47e_200.png b/docs/notes/pics/13783e94-b481-4aea-9fa2-9d1973abd47e_200.png new file mode 100644 index 0000000000..10d2aab07d Binary files /dev/null and b/docs/notes/pics/13783e94-b481-4aea-9fa2-9d1973abd47e_200.png differ diff --git a/docs/notes/pics/14ab3de0-0d48-4466-9ea7-90b9be822034_200.png b/docs/notes/pics/14ab3de0-0d48-4466-9ea7-90b9be822034_200.png new file mode 100644 index 0000000000..399846e104 Binary files /dev/null and b/docs/notes/pics/14ab3de0-0d48-4466-9ea7-90b9be822034_200.png differ diff --git a/docs/notes/pics/15699a17-5a69-4fbe-852e-9d2b7cf05e80_200.png b/docs/notes/pics/15699a17-5a69-4fbe-852e-9d2b7cf05e80_200.png new file mode 100644 index 0000000000..85d93b2705 Binary files /dev/null and b/docs/notes/pics/15699a17-5a69-4fbe-852e-9d2b7cf05e80_200.png differ diff --git a/docs/notes/pics/417cb02e-853d-4288-a36e-9161ded2c9fd_200.png b/docs/notes/pics/417cb02e-853d-4288-a36e-9161ded2c9fd_200.png new file mode 100644 index 0000000000..d623b1e3f2 Binary files /dev/null and b/docs/notes/pics/417cb02e-853d-4288-a36e-9161ded2c9fd_200.png differ diff --git a/docs/notes/pics/6f1938e5-fc49-4e7b-a383-2b46f0942d70_200.png b/docs/notes/pics/6f1938e5-fc49-4e7b-a383-2b46f0942d70_200.png new file mode 100644 index 0000000000..a830a7d465 Binary files /dev/null and b/docs/notes/pics/6f1938e5-fc49-4e7b-a383-2b46f0942d70_200.png differ diff --git a/docs/notes/pics/7c5bcdbf-e656-4b7c-be82-b247a3589ed5_200.png b/docs/notes/pics/7c5bcdbf-e656-4b7c-be82-b247a3589ed5_200.png new file mode 100644 index 0000000000..cf1868b606 Binary files /dev/null and b/docs/notes/pics/7c5bcdbf-e656-4b7c-be82-b247a3589ed5_200.png differ diff --git a/docs/notes/pics/7e82ce01-2afb-4c15-b720-b81049c875c2_200.png b/docs/notes/pics/7e82ce01-2afb-4c15-b720-b81049c875c2_200.png new file mode 100644 index 0000000000..0741f44ee2 Binary files /dev/null and b/docs/notes/pics/7e82ce01-2afb-4c15-b720-b81049c875c2_200.png differ diff --git a/docs/notes/pics/83e9c5ed-35a1-41fd-b0dd-ce571969b5f3_200.png b/docs/notes/pics/83e9c5ed-35a1-41fd-b0dd-ce571969b5f3_200.png new file mode 100644 index 0000000000..23fc9fbd4b Binary files /dev/null and b/docs/notes/pics/83e9c5ed-35a1-41fd-b0dd-ce571969b5f3_200.png differ diff --git a/docs/notes/pics/84d496d7-54b0-4a9b-9499-ce232057e499_200.png b/docs/notes/pics/84d496d7-54b0-4a9b-9499-ce232057e499_200.png new file mode 100644 index 0000000000..5423ac8596 Binary files /dev/null and b/docs/notes/pics/84d496d7-54b0-4a9b-9499-ce232057e499_200.png differ diff --git a/docs/notes/pics/a0e90bd3-747d-4c3a-8fa0-179c59eeded0_200.png b/docs/notes/pics/a0e90bd3-747d-4c3a-8fa0-179c59eeded0_200.png new file mode 100644 index 0000000000..541acf31e0 Binary files /dev/null and b/docs/notes/pics/a0e90bd3-747d-4c3a-8fa0-179c59eeded0_200.png differ diff --git a/docs/notes/pics/b39a085e-e7a2-4657-b75e-ba1652a4b132.jpg b/docs/notes/pics/b39a085e-e7a2-4657-b75e-ba1652a4b132.jpg new file mode 100644 index 0000000000..fa79744a82 Binary files /dev/null and b/docs/notes/pics/b39a085e-e7a2-4657-b75e-ba1652a4b132.jpg differ diff --git a/docs/notes/pics/b48b9a7a-f9f8-4cf9-90f1-5cddd685b782_200.png b/docs/notes/pics/b48b9a7a-f9f8-4cf9-90f1-5cddd685b782_200.png new file mode 100644 index 0000000000..ac9868d1eb Binary files /dev/null and b/docs/notes/pics/b48b9a7a-f9f8-4cf9-90f1-5cddd685b782_200.png differ diff --git a/docs/notes/pics/cb5d2258-a60e-4364-94a7-3429a3064554_200.png b/docs/notes/pics/cb5d2258-a60e-4364-94a7-3429a3064554_200.png new file mode 100644 index 0000000000..7a7c702d9f Binary files /dev/null and b/docs/notes/pics/cb5d2258-a60e-4364-94a7-3429a3064554_200.png differ diff --git a/docs/notes/pics/cbd5f6f6-18de-4711-9e01-0f94e66f81b8_200.png b/docs/notes/pics/cbd5f6f6-18de-4711-9e01-0f94e66f81b8_200.png new file mode 100644 index 0000000000..215d2c8ddc Binary files /dev/null and b/docs/notes/pics/cbd5f6f6-18de-4711-9e01-0f94e66f81b8_200.png differ diff --git a/docs/notes/pics/d1ed87eb-da5a-4728-b0dc-e3705aa028ea.gif b/docs/notes/pics/d1ed87eb-da5a-4728-b0dc-e3705aa028ea.gif new file mode 100644 index 0000000000..2c0accfc29 Binary files /dev/null and b/docs/notes/pics/d1ed87eb-da5a-4728-b0dc-e3705aa028ea.gif differ diff --git a/docs/notes/pics/fa1dc552-8501-439e-b85a-3d9eac704880_200.png b/docs/notes/pics/fa1dc552-8501-439e-b85a-3d9eac704880_200.png new file mode 100644 index 0000000000..2142bbb59f Binary files /dev/null and b/docs/notes/pics/fa1dc552-8501-439e-b85a-3d9eac704880_200.png differ diff --git a/docs/notes/pics/fac3dfd6-1656-4329-9a80-7f6c51ef30c5_200.png b/docs/notes/pics/fac3dfd6-1656-4329-9a80-7f6c51ef30c5_200.png new file mode 100644 index 0000000000..31ae3277cd Binary files /dev/null and b/docs/notes/pics/fac3dfd6-1656-4329-9a80-7f6c51ef30c5_200.png differ diff --git "a/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" "b/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" index 47be0adc61..cae693f713 100644 --- "a/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" +++ "b/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" @@ -31,7 +31,7 @@ | 单词 | 可替代单词 | | :---: | --- | -| send | deliver、dispatch、announce、distribute、route | +| send | deliver、dispatch、announce、distribute、route | | find | search、extract、locate、recover | | start| launch、create、begin、open| | make | create、set up、build、generate、compose、add、new | diff --git "a/docs/notes/\345\211\221\346\214\207 offer \351\242\230\350\247\243.md" "b/docs/notes/\345\211\221\346\214\207 offer \351\242\230\350\247\243.md" index b6e4fecfe8..12960a2975 100644 --- "a/docs/notes/\345\211\221\346\214\207 offer \351\242\230\350\247\243.md" +++ "b/docs/notes/\345\211\221\346\214\207 offer \351\242\230\350\247\243.md" @@ -8,8 +8,8 @@ * [8. 二叉树的下一个结点](#8-二叉树的下一个结点) * [9. 用两个栈实现队列](#9-用两个栈实现队列) * [10.1 斐波那契数列](#101-斐波那契数列) -* [10.2 跳台阶](#102-跳台阶) -* [10.3 矩形覆盖](#103-矩形覆盖) +* [10.2 矩形覆盖](#102-矩形覆盖) +* [10.3 跳台阶](#103-跳台阶) * [10.4 变态跳台阶](#104-变态跳台阶) * [11. 旋转数组的最小数字](#11-旋转数组的最小数字) * [12. 矩阵中的路径](#12-矩阵中的路径) @@ -502,25 +502,25 @@ public class Solution { } ``` -# 10.2 跳台阶 +# 10.2 矩形覆盖 -[NowCoder](https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4?tpId=13&tqId=11161&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking) +[NowCoder](https://www.nowcoder.com/practice/72a5a919508a4251859fb2cfb987a0e6?tpId=13&tqId=11163&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking) ## 题目描述 -一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 +我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 ```java -public int JumpFloor(int n) { +public int RectCover(int n) { if (n <= 2) return n; int pre2 = 1, pre1 = 2; - int result = 1; - for (int i = 2; i < n; i++) { + int result = 0; + for (int i = 3; i <= n; i++) { result = pre2 + pre1; pre2 = pre1; pre1 = result; @@ -529,25 +529,25 @@ public int JumpFloor(int n) { } ``` -# 10.3 矩形覆盖 +# 10.3 跳台阶 -[NowCoder](https://www.nowcoder.com/practice/72a5a919508a4251859fb2cfb987a0e6?tpId=13&tqId=11163&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking) +[NowCoder](https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4?tpId=13&tqId=11161&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking) ## 题目描述 -我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? +一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 ```java -public int RectCover(int n) { +public int JumpFloor(int n) { if (n <= 2) return n; int pre2 = 1, pre1 = 2; - int result = 0; - for (int i = 3; i <= n; i++) { + int result = 1; + for (int i = 2; i < n; i++) { result = pre2 + pre1; pre2 = pre1; pre1 = result; @@ -564,7 +564,7 @@ public int RectCover(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 @@ -2998,7 +2998,7 @@ public int StrToInt(String str) { ### 二叉查找树 -

+

[Leetcode : 235. Lowest Common Ancestor of a Binary Search Tree](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/description/) diff --git "a/docs/notes/\347\256\227\346\263\225.md" "b/docs/notes/\347\256\227\346\263\225.md" index fa85797c27..7593e36eb3 100644 --- "a/docs/notes/\347\256\227\346\263\225.md" +++ "b/docs/notes/\347\256\227\346\263\225.md" @@ -382,7 +382,7 @@ public class Insertion> extends Sort { 希尔排序使用插入排序对间隔 h 的序列进行排序。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。 -

+

```java public class Shell> extends Sort { @@ -443,7 +443,7 @@ public abstract class MergeSort> extends Sort { } else if (j > h) { nums[k] = aux[i++]; - } else if (aux[i].compareTo(nums[j]) <= 0) { + } else if (aux[i].compareTo(aux[j]) <= 0) { nums[k] = aux[i++]; // 先进行这一步,保证稳定性 } else { diff --git a/docs/pics/0f9b9d2a-c5cc-4a3f-b138-2c1035950f39_200.png b/docs/pics/0f9b9d2a-c5cc-4a3f-b138-2c1035950f39_200.png new file mode 100644 index 0000000000..0b4a58384a Binary files /dev/null and b/docs/pics/0f9b9d2a-c5cc-4a3f-b138-2c1035950f39_200.png differ diff --git a/docs/pics/11a786f0-5e02-46a6-92f0-f302c9cf6ca3_200.png b/docs/pics/11a786f0-5e02-46a6-92f0-f302c9cf6ca3_200.png new file mode 100644 index 0000000000..5368338645 Binary files /dev/null and b/docs/pics/11a786f0-5e02-46a6-92f0-f302c9cf6ca3_200.png differ diff --git a/docs/pics/13783e94-b481-4aea-9fa2-9d1973abd47e_200.png b/docs/pics/13783e94-b481-4aea-9fa2-9d1973abd47e_200.png new file mode 100644 index 0000000000..10d2aab07d Binary files /dev/null and b/docs/pics/13783e94-b481-4aea-9fa2-9d1973abd47e_200.png differ diff --git a/docs/pics/14ab3de0-0d48-4466-9ea7-90b9be822034_200.png b/docs/pics/14ab3de0-0d48-4466-9ea7-90b9be822034_200.png new file mode 100644 index 0000000000..399846e104 Binary files /dev/null and b/docs/pics/14ab3de0-0d48-4466-9ea7-90b9be822034_200.png differ diff --git a/docs/pics/15699a17-5a69-4fbe-852e-9d2b7cf05e80_200.png b/docs/pics/15699a17-5a69-4fbe-852e-9d2b7cf05e80_200.png new file mode 100644 index 0000000000..85d93b2705 Binary files /dev/null and b/docs/pics/15699a17-5a69-4fbe-852e-9d2b7cf05e80_200.png differ diff --git a/docs/pics/417cb02e-853d-4288-a36e-9161ded2c9fd_200.png b/docs/pics/417cb02e-853d-4288-a36e-9161ded2c9fd_200.png new file mode 100644 index 0000000000..d623b1e3f2 Binary files /dev/null and b/docs/pics/417cb02e-853d-4288-a36e-9161ded2c9fd_200.png differ diff --git a/docs/pics/6f1938e5-fc49-4e7b-a383-2b46f0942d70_200.png b/docs/pics/6f1938e5-fc49-4e7b-a383-2b46f0942d70_200.png new file mode 100644 index 0000000000..a830a7d465 Binary files /dev/null and b/docs/pics/6f1938e5-fc49-4e7b-a383-2b46f0942d70_200.png differ diff --git a/docs/pics/7c5bcdbf-e656-4b7c-be82-b247a3589ed5_200.png b/docs/pics/7c5bcdbf-e656-4b7c-be82-b247a3589ed5_200.png new file mode 100644 index 0000000000..cf1868b606 Binary files /dev/null and b/docs/pics/7c5bcdbf-e656-4b7c-be82-b247a3589ed5_200.png differ diff --git a/docs/pics/7e82ce01-2afb-4c15-b720-b81049c875c2_200.png b/docs/pics/7e82ce01-2afb-4c15-b720-b81049c875c2_200.png new file mode 100644 index 0000000000..0741f44ee2 Binary files /dev/null and b/docs/pics/7e82ce01-2afb-4c15-b720-b81049c875c2_200.png differ diff --git a/docs/pics/83e9c5ed-35a1-41fd-b0dd-ce571969b5f3_200.png b/docs/pics/83e9c5ed-35a1-41fd-b0dd-ce571969b5f3_200.png new file mode 100644 index 0000000000..23fc9fbd4b Binary files /dev/null and b/docs/pics/83e9c5ed-35a1-41fd-b0dd-ce571969b5f3_200.png differ diff --git a/docs/pics/84d496d7-54b0-4a9b-9499-ce232057e499_200.png b/docs/pics/84d496d7-54b0-4a9b-9499-ce232057e499_200.png new file mode 100644 index 0000000000..5423ac8596 Binary files /dev/null and b/docs/pics/84d496d7-54b0-4a9b-9499-ce232057e499_200.png differ diff --git a/docs/pics/a0e90bd3-747d-4c3a-8fa0-179c59eeded0_200.png b/docs/pics/a0e90bd3-747d-4c3a-8fa0-179c59eeded0_200.png new file mode 100644 index 0000000000..541acf31e0 Binary files /dev/null and b/docs/pics/a0e90bd3-747d-4c3a-8fa0-179c59eeded0_200.png differ diff --git a/docs/pics/b39a085e-e7a2-4657-b75e-ba1652a4b132.jpg b/docs/pics/b39a085e-e7a2-4657-b75e-ba1652a4b132.jpg new file mode 100644 index 0000000000..fa79744a82 Binary files /dev/null and b/docs/pics/b39a085e-e7a2-4657-b75e-ba1652a4b132.jpg differ diff --git a/docs/pics/b48b9a7a-f9f8-4cf9-90f1-5cddd685b782_200.png b/docs/pics/b48b9a7a-f9f8-4cf9-90f1-5cddd685b782_200.png new file mode 100644 index 0000000000..ac9868d1eb Binary files /dev/null and b/docs/pics/b48b9a7a-f9f8-4cf9-90f1-5cddd685b782_200.png differ diff --git a/docs/pics/cb5d2258-a60e-4364-94a7-3429a3064554_200.png b/docs/pics/cb5d2258-a60e-4364-94a7-3429a3064554_200.png new file mode 100644 index 0000000000..7a7c702d9f Binary files /dev/null and b/docs/pics/cb5d2258-a60e-4364-94a7-3429a3064554_200.png differ diff --git a/docs/pics/cbd5f6f6-18de-4711-9e01-0f94e66f81b8_200.png b/docs/pics/cbd5f6f6-18de-4711-9e01-0f94e66f81b8_200.png new file mode 100644 index 0000000000..215d2c8ddc Binary files /dev/null and b/docs/pics/cbd5f6f6-18de-4711-9e01-0f94e66f81b8_200.png differ diff --git a/docs/pics/d1ed87eb-da5a-4728-b0dc-e3705aa028ea.gif b/docs/pics/d1ed87eb-da5a-4728-b0dc-e3705aa028ea.gif new file mode 100644 index 0000000000..2c0accfc29 Binary files /dev/null and b/docs/pics/d1ed87eb-da5a-4728-b0dc-e3705aa028ea.gif differ diff --git a/docs/pics/fa1dc552-8501-439e-b85a-3d9eac704880_200.png b/docs/pics/fa1dc552-8501-439e-b85a-3d9eac704880_200.png new file mode 100644 index 0000000000..2142bbb59f Binary files /dev/null and b/docs/pics/fa1dc552-8501-439e-b85a-3d9eac704880_200.png differ diff --git a/docs/pics/fac3dfd6-1656-4329-9a80-7f6c51ef30c5_200.png b/docs/pics/fac3dfd6-1656-4329-9a80-7f6c51ef30c5_200.png new file mode 100644 index 0000000000..31ae3277cd Binary files /dev/null and b/docs/pics/fac3dfd6-1656-4329-9a80-7f6c51ef30c5_200.png differ