diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" index 8ae2cec624d422e0e469b052c46019e3d5d404c9..3fa2cd51a07770a527de17d38602ffc1711aac29 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" @@ -59,7 +59,7 @@ -

+

考虑到 dp[i] 只与 dp[i - 1] 和 dp[i - 2] 有关,因此可以只用两个变量来存储 dp[i - 1] 和 dp[i - 2],使得原来的 O(N) 空间复杂度优化为 O(1) 复杂度。 @@ -91,7 +91,8 @@ public int climbStairs(int n) { -

+

+ ```java public int rob(int[] nums) { @@ -145,7 +146,7 @@ private int rob(int[] nums, int first, int last) { -

+

## 母牛生产 @@ -157,7 +158,7 @@ private int rob(int[] nums, int first, int last) { -

+

# 矩阵路径 @@ -203,7 +204,7 @@ public int minPathSum(int[][] grid) { 题目描述:统计从矩阵左上角到右下角的路径总数,每次只能向右或者向下移动。 -

+

```java public int uniquePaths(int m, int n) { @@ -400,7 +401,7 @@ public int numDecodings(String s) { -

+

对于一个长度为 N 的序列,最长递增子序列并不一定会以 SN 为结尾,因此 dp[N] 不是序列的最长递增子序列的长度,需要遍历 dp 数组找出最大值才是所要的结果,max{ dp[i] | 1 <= i <= N} 即为所求。 @@ -567,7 +568,7 @@ public int wiggleMaxLength(int[] nums) { -

+

对于长度为 N 的序列 S1 和长度为 M 的序列 S2,dp[N][M] 就是序列 S1 和序列 S2 的最长公共子序列长度。 @@ -607,7 +608,7 @@ public int lengthOfLCS(int[] nums1, int[] nums2) { -

+

```java public int knapsack(int W, int N, int[] weights, int[] values) { @@ -632,7 +633,7 @@ public int knapsack(int W, int N, int[] weights, int[] values) { -

+

因为 dp[j-w] 表示 dp[i-1][j-w],因此不能先求 dp[i][j-w],以防将 dp[i-1][j-w] 覆盖。也就是说要先计算 dp[i][j] 再计算 dp[i][j-w],在程序实现时需要按倒序来循环求解。 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" index 1ef7b351575761fa73e8592f282291ad0220b58a..146c483e4ec3875b02b7cba54af35ea05902786d 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" @@ -27,13 +27,14 @@ Output: ## 解题思路 -要求是时间复杂度 O(N),空间复杂度 O(1)。因此不能使用排序的方法,也不能使用额外的标记数组。 +要求时间复杂度 O(N),空间复杂度 O(1)。因此不能使用排序的方法,也不能使用额外的标记数组。 对于这种数组元素在 [0, n-1] 范围内的问题,可以将值为 i 的元素调整到第 i 个位置上进行求解。 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

+ ```java public boolean duplicate(int[] nums, int length, int[] duplication) { diff --git a/docs/pics/49d2adc1-b28a-44bf-babb-d44993f4a2e3.gif b/docs/pics/49d2adc1-b28a-44bf-babb-d44993f4a2e3.gif new file mode 100644 index 0000000000000000000000000000000000000000..e2af5f10d48b03dd2d7b938834f2aaeb1939e815 Binary files /dev/null and b/docs/pics/49d2adc1-b28a-44bf-babb-d44993f4a2e3.gif differ diff --git a/docs/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_.gif b/docs/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_.gif index c4c13afd42853573353bb02d46ddae730183af2a..f769ea6804dd27d39b388e96639463ff804c6e50 100644 Binary files a/docs/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_.gif and b/docs/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_.gif differ diff --git a/docs/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_1548504426508.gif b/docs/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_1548504426508.gif index f694ec180706840cb094fd345330214a8bc2fac5..9941311f04c226c4c6e29a2ad4b25dd050f0e022 100644 Binary files a/docs/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_1548504426508.gif and b/docs/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_1548504426508.gif differ diff --git a/docs/pics/_u4E8C_u7EF4_u6570_u7EC4_u4E2D_.gif b/docs/pics/_u4E8C_u7EF4_u6570_u7EC4_u4E2D_.gif index c8e3be6bf262d11f3e98009a2dbf7621f032e80a..763fc1a39fe0c495b6b54ebb5b3e844d70dad014 100644 Binary files a/docs/pics/_u4E8C_u7EF4_u6570_u7EC4_u4E2D_.gif and b/docs/pics/_u4E8C_u7EF4_u6570_u7EC4_u4E2D_.gif differ diff --git a/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548293972480.gif b/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548293972480.gif index 2f2a128f2c670620d001b85ff47bced61dcdb45d..1587890cc487e30bc31810a251c12711a49d49a2 100644 Binary files a/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548293972480.gif and b/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548293972480.gif differ diff --git a/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548295232667.gif b/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548295232667.gif index d1ef30b75758d313f000e50cc38b1a26e4f4343c..312fea607503b2dd3fbc0e7b10968b5470987249 100644 Binary files a/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548295232667.gif and b/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548295232667.gif differ diff --git a/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548296249372.gif b/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548296249372.gif index 7aacca3a775ed016f588ef8313771f943e0fe24c..61c506c9a12fb5c4a5f5cae914d5591de1e9700a 100644 Binary files a/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548296249372.gif and b/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548296249372.gif differ diff --git a/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548503461113.gif b/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548503461113.gif index ac918089c3a1faca655c1eb54b968dffb1a5e43e..8c0ba8e3803033d1e3dd1041897bdf432b6debe6 100644 Binary files a/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548503461113.gif and b/docs/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548503461113.gif differ diff --git a/docs/pics/_u66FF_u6362_u7A7A_u683C.gif b/docs/pics/_u66FF_u6362_u7A7A_u683C.gif index 921a24d89f0c053ed5c3c475caadb6a9c2a94c07..fe6c5503bcffa54df28b60970e4a6bdcb1240bd9 100644 Binary files a/docs/pics/_u66FF_u6362_u7A7A_u683C.gif and b/docs/pics/_u66FF_u6362_u7A7A_u683C.gif differ diff --git a/docs/pics/_u7528_u4E24_u4E2A_u6808_u5B9E_.gif b/docs/pics/_u7528_u4E24_u4E2A_u6808_u5B9E_.gif index 445d421bc47002a069e93eeb882b15bace4a11a8..dfeff15bcf2f9fdc642a4b3cf29f1ce404d3f37b 100644 Binary files a/docs/pics/_u7528_u4E24_u4E2A_u6808_u5B9E_.gif and b/docs/pics/_u7528_u4E24_u4E2A_u6808_u5B9E_.gif differ diff --git a/docs/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-1.gif b/docs/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-1.gif index 2f48a680cc088c66e237a33387ce764e2f210fd2..a6552b51fd6a261bcc71e285d8d65ff6525e04b4 100644 Binary files a/docs/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-1.gif and b/docs/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-1.gif differ diff --git a/docs/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-21548502782193.gif b/docs/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-21548502782193.gif index 25394064af91e00597d5e5ea95345bab9e318a44..d5a4eec5135cb19520aea0df5891e9748bcfc46d 100644 Binary files a/docs/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-21548502782193.gif and b/docs/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-21548502782193.gif differ diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" "b/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" index 2f5a5e811c6cf63d68831a02464ccc514c5b3cf2..4880dfddadd743130772d2659f859355500095aa 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" @@ -59,7 +59,7 @@ -

+

考虑到 dp[i] 只与 dp[i - 1] 和 dp[i - 2] 有关,因此可以只用两个变量来存储 dp[i - 1] 和 dp[i - 2],使得原来的 O(N) 空间复杂度优化为 O(1) 复杂度。 @@ -91,7 +91,8 @@ public int climbStairs(int n) { -

+

+ ```java public int rob(int[] nums) { @@ -110,7 +111,7 @@ public int rob(int[] nums) { [213. House Robber II (Medium)](https://leetcode.com/problems/house-robber-ii/description/) ```java -public int rob(int[] nums) { +public int rob(int[] nums) { if (nums == null || nums.length == 0) { return 0; } @@ -121,7 +122,7 @@ public int rob(int[] nums) { return Math.max(rob(nums, 0, n - 2), rob(nums, 1, n - 1)); } -private int rob(int[] nums, int first, int last) { +private int rob(int[] nums, int first, int last) { int pre2 = 0, pre1 = 0; for (int i = first; i <= last; i++) { int cur = Math.max(pre1, pre2 + nums[i]); @@ -145,7 +146,7 @@ private int rob(int[] nums, int first, int last) { -

+

## 母牛生产 @@ -157,7 +158,7 @@ private int rob(int[] nums, int first, int last) { -

+

# 矩阵路径 @@ -203,7 +204,7 @@ public int minPathSum(int[][] grid) { 题目描述:统计从矩阵左上角到右下角的路径总数,每次只能向右或者向下移动。 -

+

```java public int uniquePaths(int m, int n) { @@ -400,7 +401,7 @@ public int numDecodings(String s) { -

+

对于一个长度为 N 的序列,最长递增子序列并不一定会以 SN 为结尾,因此 dp[N] 不是序列的最长递增子序列的长度,需要遍历 dp 数组找出最大值才是所要的结果,max{ dp[i] | 1 <= i <= N} 即为所求。 @@ -567,7 +568,7 @@ public int wiggleMaxLength(int[] nums) { -

+

对于长度为 N 的序列 S1 和长度为 M 的序列 S2,dp[N][M] 就是序列 S1 和序列 S2 的最长公共子序列长度。 @@ -607,7 +608,7 @@ public int lengthOfLCS(int[] nums1, int[] nums2) { -

+

```java public int knapsack(int W, int N, int[] weights, int[] values) { @@ -632,7 +633,7 @@ public int knapsack(int W, int N, int[] weights, int[] values) { -

+

因为 dp[j-w] 表示 dp[i-1][j-w],因此不能先求 dp[i][j-w],以防将 dp[i-1][j-w] 覆盖。也就是说要先计算 dp[i][j] 再计算 dp[i][j-w],在程序实现时需要按倒序来循环求解。 diff --git a/notes/pics/49d2adc1-b28a-44bf-babb-d44993f4a2e3.gif b/notes/pics/49d2adc1-b28a-44bf-babb-d44993f4a2e3.gif new file mode 100644 index 0000000000000000000000000000000000000000..e2af5f10d48b03dd2d7b938834f2aaeb1939e815 Binary files /dev/null and b/notes/pics/49d2adc1-b28a-44bf-babb-d44993f4a2e3.gif differ diff --git a/notes/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_.gif b/notes/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_.gif index c4c13afd42853573353bb02d46ddae730183af2a..f769ea6804dd27d39b388e96639463ff804c6e50 100644 Binary files a/notes/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_.gif and b/notes/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_.gif differ diff --git a/notes/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_1548504426508.gif b/notes/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_1548504426508.gif index f694ec180706840cb094fd345330214a8bc2fac5..9941311f04c226c4c6e29a2ad4b25dd050f0e022 100644 Binary files a/notes/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_1548504426508.gif and b/notes/pics/_u4E8C_u53C9_u6811_u7684_u4E0B_1548504426508.gif differ diff --git a/notes/pics/_u4E8C_u7EF4_u6570_u7EC4_u4E2D_.gif b/notes/pics/_u4E8C_u7EF4_u6570_u7EC4_u4E2D_.gif index c8e3be6bf262d11f3e98009a2dbf7621f032e80a..763fc1a39fe0c495b6b54ebb5b3e844d70dad014 100644 Binary files a/notes/pics/_u4E8C_u7EF4_u6570_u7EC4_u4E2D_.gif and b/notes/pics/_u4E8C_u7EF4_u6570_u7EC4_u4E2D_.gif differ diff --git a/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548293972480.gif b/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548293972480.gif index 2f2a128f2c670620d001b85ff47bced61dcdb45d..1587890cc487e30bc31810a251c12711a49d49a2 100644 Binary files a/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548293972480.gif and b/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548293972480.gif differ diff --git a/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548295232667.gif b/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548295232667.gif index d1ef30b75758d313f000e50cc38b1a26e4f4343c..312fea607503b2dd3fbc0e7b10968b5470987249 100644 Binary files a/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548295232667.gif and b/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548295232667.gif differ diff --git a/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548296249372.gif b/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548296249372.gif index 7aacca3a775ed016f588ef8313771f943e0fe24c..61c506c9a12fb5c4a5f5cae914d5591de1e9700a 100644 Binary files a/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548296249372.gif and b/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548296249372.gif differ diff --git a/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548503461113.gif b/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548503461113.gif index ac918089c3a1faca655c1eb54b968dffb1a5e43e..8c0ba8e3803033d1e3dd1041897bdf432b6debe6 100644 Binary files a/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548503461113.gif and b/notes/pics/_u4ECE_u5C3E_u5230_u5934_u6253_1548503461113.gif differ diff --git a/notes/pics/_u66FF_u6362_u7A7A_u683C.gif b/notes/pics/_u66FF_u6362_u7A7A_u683C.gif index 921a24d89f0c053ed5c3c475caadb6a9c2a94c07..fe6c5503bcffa54df28b60970e4a6bdcb1240bd9 100644 Binary files a/notes/pics/_u66FF_u6362_u7A7A_u683C.gif and b/notes/pics/_u66FF_u6362_u7A7A_u683C.gif differ diff --git a/notes/pics/_u7528_u4E24_u4E2A_u6808_u5B9E_.gif b/notes/pics/_u7528_u4E24_u4E2A_u6808_u5B9E_.gif index 445d421bc47002a069e93eeb882b15bace4a11a8..dfeff15bcf2f9fdc642a4b3cf29f1ce404d3f37b 100644 Binary files a/notes/pics/_u7528_u4E24_u4E2A_u6808_u5B9E_.gif and b/notes/pics/_u7528_u4E24_u4E2A_u6808_u5B9E_.gif differ diff --git a/notes/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-1.gif b/notes/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-1.gif index 2f48a680cc088c66e237a33387ce764e2f210fd2..a6552b51fd6a261bcc71e285d8d65ff6525e04b4 100644 Binary files a/notes/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-1.gif and b/notes/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-1.gif differ diff --git a/notes/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-21548502782193.gif b/notes/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-21548502782193.gif index 25394064af91e00597d5e5ea95345bab9e318a44..d5a4eec5135cb19520aea0df5891e9748bcfc46d 100644 Binary files a/notes/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-21548502782193.gif and b/notes/pics/_u91CD_u5EFA_u4E8C_u53C9_u6811-21548502782193.gif differ diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" index 0635d26af1ea553e5737cf85fe35928a7aea6084..62114275990269a416aa73d323c8e64d6a57d936 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" @@ -27,13 +27,14 @@ Output: ## 解题思路 -要求是时间复杂度 O(N),空间复杂度 O(1)。因此不能使用排序的方法,也不能使用额外的标记数组。 +要求时间复杂度 O(N),空间复杂度 O(1)。因此不能使用排序的方法,也不能使用额外的标记数组。 对于这种数组元素在 [0, n-1] 范围内的问题,可以将值为 i 的元素调整到第 i 个位置上进行求解。 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

+ ```java public boolean duplicate(int[] nums, int length, int[] duplication) {