From 631b333c084b98bf23f8565789452f01a4fa61ae Mon Sep 17 00:00:00 2001 From: programmercarl <826123027@qq.com> Date: 2023年9月19日 16:21:37 +0800 Subject: [PATCH] Update --- ...042.346円216円245円351円233円250円346円260円264円.md" | 4 ++-- ...63350円267円203円346円270円270円346円210円217円II.md" | 12 ++++++------ ...4345円220円210円346円200円273円345円222円214円III.md" | 4 ++-- ...253円345円206円267円345円206円273円346円234円237円.md" | 4 ++-- ...255円347円232円204円344円274円227円346円225円260円.md" | 2 +- ...211円346円220円234円347円264円242円346円240円221円.md" | 17 ----------------- ...211円346円255円245円351円223円272円345円236円253円.md" | 2 +- "problems/345円211円215円345円272円217円/vim.md" | 4 ++-- ...206円350円256円272円345円237円272円347円241円200円.md" | 2 +- 9 files changed, 17 insertions(+), 34 deletions(-) diff --git "a/problems/0042.346円216円245円351円233円250円346円260円264円.md" "b/problems/0042.346円216円245円351円233円250円346円260円264円.md" index 760ebc34a4..1090467dc1 100644 --- "a/problems/0042.346円216円245円351円233円250円346円260円264円.md" +++ "b/problems/0042.346円216円245円351円233円250円346円260円264円.md" @@ -39,8 +39,8 @@ 本文深度讲解如下三种方法: -* 双指针法 -* 动态规划 +* 暴力解法 +* 双指针优化 * 单调栈 ### 暴力解法 diff --git "a/problems/0045.350円267円263円350円267円203円346円270円270円346円210円217円II.md" "b/problems/0045.350円267円263円350円267円203円346円270円270円346円210円217円II.md" index fbd848665b..aab27b27ee 100644 --- "a/problems/0045.350円267円263円350円267円203円346円270円270円346円210円217円II.md" +++ "b/problems/0045.350円267円263円350円267円203円346円270円270円346円210円217円II.md" @@ -35,13 +35,13 @@ 但思路是相似的,还是要看最大覆盖范围。 -本题要计算最小步数,那么就要想清楚什么时候步数才一定要加一呢? +本题要计算最少步数,那么就要想清楚什么时候步数才一定要加一呢? -贪心的思路,局部最优:当前可移动距离尽可能多走,如果还没到终点,步数再加一。整体最优:一步尽可能多走,从而达到最小步数。 +贪心的思路,局部最优:当前可移动距离尽可能多走,如果还没到终点,步数再加一。整体最优:一步尽可能多走,从而达到最少步数。 思路虽然是这样,但在写代码的时候还不能真的能跳多远就跳多远,那样就不知道下一步最远能跳到哪里了。 -**所以真正解题的时候,要从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最小步数!** +**所以真正解题的时候,要从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最少步数!** **这里需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖**。 @@ -144,7 +144,7 @@ public: 但代码又十分简单,贪心就是这么巧妙。 -理解本题的关键在于:**以最小的步数增加最大的覆盖范围,直到覆盖范围覆盖了终点**,这个范围内最小步数一定可以跳到,不用管具体是怎么跳的,不纠结于一步究竟跳一个单位还是两个单位。 +理解本题的关键在于:**以最小的步数增加最大的覆盖范围,直到覆盖范围覆盖了终点**,这个范围内最少步数一定可以跳到,不用管具体是怎么跳的,不纠结于一步究竟跳一个单位还是两个单位。 ## 其他语言版本 @@ -276,9 +276,9 @@ class Solution: for i in range(len(nums)): # 遍历数组 for j in range(nums[i] + 1): # 在当前位置能够跳跃的范围内遍历 if i + j < len(nums): # 确保下一跳的位置不超过数组范围 - result[i + j] = min(result[i + j], result[i] + 1) # 更新到达下一跳位置的最小步数 + result[i + j] = min(result[i + j], result[i] + 1) # 更新到达下一跳位置的最少步数 - return result[-1] # 返回到达最后一个位置的最小步数 + return result[-1] # 返回到达最后一个位置的最少步数 ``` diff --git "a/problems/0216.347円273円204円345円220円210円346円200円273円345円222円214円III.md" "b/problems/0216.347円273円204円345円220円210円346円200円273円345円222円214円III.md" index 4de7dc58f3..c0cb8860c2 100644 --- "a/problems/0216.347円273円204円345円220円210円346円200円273円345円222円214円III.md" +++ "b/problems/0216.347円273円204円345円220円210円346円200円273円345円222円214円III.md" @@ -209,11 +209,11 @@ private: vector path; // 符合条件的结果 void backtracking(int targetSum, int k, int sum, int startIndex) { if (sum> targetSum) { // 剪枝操作 - return; // 如果path.size() == k 但sum != targetSum 直接返回 + return; } if (path.size() == k) { if (sum == targetSum) result.push_back(path); - return; + return; // 如果path.size() == k 但sum != targetSum 直接返回 } for (int i = startIndex; i <= 9 - (k - path.size()) + 1; i++) { // 剪枝 sum += i; // 处理 diff --git "a/problems/0309.346円234円200円344円275円263円344円271円260円345円215円226円350円202円241円347円245円250円346円227円266円346円234円272円345円220円253円345円206円267円345円206円273円346円234円237円.md" "b/problems/0309.346円234円200円344円275円263円344円271円260円345円215円226円350円202円241円347円245円250円346円227円266円346円234円272円345円220円253円345円206円267円345円206円273円346円234円237円.md" index f4093b67e6..0eb66fb543 100644 --- "a/problems/0309.346円234円200円344円275円263円344円271円260円345円215円226円350円202円241円347円245円250円346円227円266円346円234円272円345円220円253円345円206円267円345円206円273円346円234円237円.md" +++ "b/problems/0309.346円234円200円344円275円263円344円271円260円345円215円226円350円202円241円347円245円250円346円227円266円346円234円272円345円220円253円345円206円267円345円206円273円346円234円237円.md" @@ -240,9 +240,9 @@ class Solution { // 因为马上dp[0]和dp[2]的数据都会变 int temp = dp[0]; int temp1 = dp[2]; - dp[0] = Math.max(dp[0], Math.max(dp[3], dp[1]) - prices[i-1]); + dp[0] = Math.max(dp[0], Math.max(dp[3], dp[1]) - prices[i]); dp[1] = Math.max(dp[1], dp[3]); - dp[2] = temp + prices[i-1]; + dp[2] = temp + prices[i]; dp[3] = temp1; } return Math.max(dp[3],Math.max(dp[1],dp[2])); diff --git "a/problems/0501.344円272円214円345円217円211円346円220円234円347円264円242円346円240円221円344円270円255円347円232円204円344円274円227円346円225円260円.md" "b/problems/0501.344円272円214円345円217円211円346円220円234円347円264円242円346円240円221円344円270円255円347円232円204円344円274円227円346円225円260円.md" index 29b0926d4d..8881200f5d 100644 --- "a/problems/0501.344円272円214円345円217円211円346円220円234円347円264円242円346円240円221円344円270円255円347円232円204円344円274円227円346円225円260円.md" +++ "b/problems/0501.344円272円214円345円217円211円346円220円234円347円264円242円346円240円221円344円270円255円347円232円204円344円274円227円346円225円260円.md" @@ -261,7 +261,7 @@ public: vector findMode(TreeNode* root) { count = 0; maxCount = 0; - TreeNode* pre = NULL; // 记录前一个节点 + pre = NULL; // 记录前一个节点 result.clear(); searchBST(root); diff --git "a/problems/0669.344円277円256円345円211円252円344円272円214円345円217円211円346円220円234円347円264円242円346円240円221円.md" "b/problems/0669.344円277円256円345円211円252円344円272円214円345円217円211円346円220円234円347円264円242円346円240円221円.md" index 2cfbfefc60..001865585d 100644 --- "a/problems/0669.344円277円256円345円211円252円344円272円214円345円217円211円346円220円234円347円264円242円346円240円221円.md" +++ "b/problems/0669.344円277円256円345円211円252円344円272円214円345円217円211円346円220円234円347円264円242円346円240円221円.md" @@ -330,23 +330,6 @@ class Solution: return root ``` -递归法(版本二)精简 -```python -class Solution: - def trimBST(self, root: TreeNode, low: int, high: int) -> TreeNode: - if root is None: - return None - if root.val < low: - return self.trimBST(root.right, low, high) - if root.val> high: - return self.trimBST(root.left, low, high) - root.left = self.trimBST(root.left, low, high) - root.right = self.trimBST(root.right, low, high) - return root - - -``` - 迭代法 ```python class Solution: diff --git "a/problems/344円270円272円344円272円206円347円273円235円346円235円200円347円274円226円350円276円221円350円267円235円347円246円273円357円274円214円345円215円241円345円260円224円345円201円232円344円272円206円344円270円211円346円255円245円351円223円272円345円236円253円.md" "b/problems/344円270円272円344円272円206円347円273円235円346円235円200円347円274円226円350円276円221円350円267円235円347円246円273円357円274円214円345円215円241円345円260円224円345円201円232円344円272円206円344円270円211円346円255円245円351円223円272円345円236円253円.md" index 1982d44943..442a505573 100644 --- "a/problems/344円270円272円344円272円206円347円273円235円346円235円200円347円274円226円350円276円221円350円267円235円347円246円273円357円274円214円345円215円241円345円260円224円345円201円232円344円272円206円344円270円211円346円255円245円351円223円272円345円236円253円.md" +++ "b/problems/344円270円272円344円272円206円347円273円235円346円235円200円347円274円226円350円276円221円350円267円235円347円246円273円357円274円214円345円215円241円345円260円224円345円201円232円344円272円206円344円270円211円346円255円245円351円223円272円345円236円253円.md" @@ -66,7 +66,7 @@ if (s[i - 1] == t[j - 1]) { ## 两个字符串的删除操作 -[动态规划:583.两个字符串的删除操作](https://programmercarl.com/0583.两个字符串的删除操作.html)给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。 +[动态规划:583.两个字符串的删除操作](https://programmercarl.com/0583.两个字符串的删除操作.html)给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最少步数,每步可以删除任意一个字符串中的一个字符。 本题和[动态规划:115.不同的子序列](https://programmercarl.com/0115.不同的子序列.html)相比,其实就是两个字符串可以都可以删除了,情况虽说复杂一些,但整体思路是不变的。 diff --git "a/problems/345円211円215円345円272円217円/vim.md" "b/problems/345円211円215円345円272円217円/vim.md" index 136a499338..581019995a 100644 --- "a/problems/345円211円215円345円272円217円/vim.md" +++ "b/problems/345円211円215円345円272円217円/vim.md" @@ -21,11 +21,11 @@ 使用VIM的话,本地,服务器,开发机,一刀流,无缝切换,爽不。 -IDE那么很吃内存,打开个IDE卡半天,用VIM就很轻便了,秒开有木有! +IDE那么很吃内存,打开个IDE卡半天,用VIM就很轻便了,秒开! 而且在我们日常开发中,工作年头多了,都会发现没有纯粹的C++,Java开发啥的,就是 C++也得写,Java也得写,有时候写Go起个http服务,写Python处理一下数据,写shell搞个自动部署,编译啥的。 **总是就是啥语言就得写,一些以项目需求为导向!** -写语言还要切换不同的IDE,熟悉不同的操作姿势,想想是不是很麻烦。 +写语言还要切换不同的IDE,熟悉不同的操作规则,想想是不是很麻烦。 听说好像现在有的IDE可以支持很多语言了,这个我还不太了解,但能确定的是,IDE支持的语言再多,也不会有vim多。 diff --git "a/problems/345円233円276円350円256円272円345円271円266円346円237円245円351円233円206円347円220円206円350円256円272円345円237円272円347円241円200円.md" "b/problems/345円233円276円350円256円272円345円271円266円346円237円245円351円233円206円347円220円206円350円256円272円345円237円272円347円241円200円.md" index 54341ce227..2c14f49037 100644 --- "a/problems/345円233円276円350円256円272円345円271円266円346円237円245円351円233円206円347円220円206円350円256円272円345円237円272円347円241円200円.md" +++ "b/problems/345円233円276円350円256円272円345円271円266円346円237円245円351円233円206円347円220円206円350円256円272円345円237円272円347円241円200円.md" @@ -289,7 +289,7 @@ join(6, 2); 此时我们生成的的有向图为: -![](https://cdn.tftree.top/others/jion.jpg) +![](https://code-thinking-1253855093.file.myqcloud.com/pics/20230910203210.png) 有录友可能想,`join(3, 8)` 在图中为什么 将 元素1 连向元素 3 而不是将 元素 8 连向 元素 3 呢?

AltStyle によって変換されたページ (->オリジナル) /