From 49d45cf9490f89442f9a27133dfc7ef04fb7e407 Mon Sep 17 00:00:00 2001 From: youngyangyang04 <826123027@qq.com> Date: Wed, 26 May 2021 09:44:15 +0800 Subject: [PATCH] Update --- README.md | 9 ++++-- problems/0001.两数之和.md | 2 +- problems/0202.快乐数.md | 18 ++++++------ problems/0203.移除链表元素.md | 13 +++++++- problems/0209.长度最小的子数组.md | 36 ++++++++++------------- problems/0494.目标和.md | 16 +++++----- problems/0669.修剪二叉搜索树.md | 2 ++ problems/背包总结篇.md | 12 -------- 8 files changed, 55 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index 82c65c7a..05fc0627 100644 --- a/README.md +++ b/README.md @@ -305,7 +305,8 @@ 背包问题系列: -背包问题大纲 +背包问题大纲 + 11. [动态规划:关于01背包问题,你该了解这些!](./problems/背包理论基础01背包-1.md) 12. [动态规划:关于01背包问题,你该了解这些!(滚动数组)](./problems/背包理论基础01背包-2.md) @@ -334,7 +335,8 @@ 股票系列: -股票问题总结 +股票问题总结 + 32. [动态规划:买卖股票的最佳时机](./problems/0121.买卖股票的最佳时机.md) 33. [动态规划:本周我们都讲了这些(系列六)](./problems/周总结/20210225动规周末总结.md) @@ -348,6 +350,9 @@ 子序列系列: + + + 40. [动态规划:最长递增子序列](./problems/0300.最长上升子序列.md) 41. [动态规划:最长连续递增序列](./problems/0674.最长连续递增序列.md) 42. [动态规划:最长重复子数组](./problems/0718.最长重复子数组.md) diff --git a/problems/0001.两数之和.md b/problems/0001.两数之和.md index f81c35ca..e3a64f17 100644 --- a/problems/0001.两数之和.md +++ b/problems/0001.两数之和.md @@ -57,7 +57,7 @@ std::unordered_map 底层实现为哈希表,std::map 和std::multimap 的底 解题思路动画如下: - +![](https://code-thinking.cdn.bcebos.com/gifs/1.两数之和.mp4) C++代码: diff --git a/problems/0202.快乐数.md b/problems/0202.快乐数.md index 06a6914c..c07405ec 100644 --- a/problems/0202.快乐数.md +++ b/problems/0202.快乐数.md @@ -22,13 +22,13 @@ https://leetcode-cn.com/problems/happy-number/ **示例:** -输入:19 -输出:true -解释: -1^2 + 9^2 = 82 -8^2 + 2^2 = 68 -6^2 + 8^2 = 100 -1^2 + 0^2 + 0^2 = 1 +输入:19 +输出:true +解释: +1^2 + 9^2 = 82 +8^2 + 2^2 = 68 +6^2 + 8^2 = 100 +1^2 + 0^2 + 0^2 = 1 # 思路 @@ -36,7 +36,7 @@ https://leetcode-cn.com/problems/happy-number/ 题目中说了会 **无限循环**,那么也就是说**求和的过程中,sum会重复出现,这对解题很重要!** -正如:[关于哈希表,你该了解这些!](https://mp.weixin.qq.com/s/g8N6WmoQmsCUw3_BaWxHZA)中所说,**当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法了。** +正如:[关于哈希表,你该了解这些!](https://mp.weixin.qq.com/s/RSUANESA_tkhKhYe3ZR8Jg)中所说,**当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法了。** 所以这道题目使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。 @@ -80,7 +80,7 @@ public: -## 其他语言版本 +# 其他语言版本 Java: diff --git a/problems/0203.移除链表元素.md b/problems/0203.移除链表元素.md index abae45f4..dce5d265 100644 --- a/problems/0203.移除链表元素.md +++ b/problems/0203.移除链表元素.md @@ -15,7 +15,18 @@ https://leetcode-cn.com/problems/remove-linked-list-elements/ 题意:删除链表中等于给定值 val 的所有节点。 -![203题目示例](https://img-blog.csdnimg.cn/20200814104441179.png) +示例 1: +输入:head = [1,2,6,3,4,5,6], val = 6 +输出:[1,2,3,4,5] + +示例 2: +输入:head = [], val = 1 +输出:[] + +示例 3: +输入:head = [7,7,7,7], val = 7 +输出:[] + # 思路 diff --git a/problems/0209.长度最小的子数组.md b/problems/0209.长度最小的子数组.md index bd25083e..90280451 100644 --- a/problems/0209.长度最小的子数组.md +++ b/problems/0209.长度最小的子数组.md @@ -116,26 +116,6 @@ public: 不要以为for里放一个while就以为是$O(n^2)$啊, 主要是看每一个元素被操作的次数,每个元素在滑动窗后进来操作一次,出去操作一次,每个元素都是被被操作两次,所以时间复杂度是2 * n 也就是$O(n)$。 -## 其他语言补充 - -python: - -```python -class Solution: - def minSubArrayLen(self, s: int, nums: List[int]) -> int: - # 定义一个无限大的数 - res = float("inf") - Sum = 0 - index = 0 - for i in range(len(nums)): - Sum += nums[i] - while Sum >= s: - res = min(res, i-index+1) - Sum -= nums[index] - index += 1 - return 0 if res==float("inf") else res -``` - ## 相关题目推荐 * 904.水果成篮 @@ -170,6 +150,22 @@ class Solution { Python: +```python +class Solution: + def minSubArrayLen(self, s: int, nums: List[int]) -> int: + # 定义一个无限大的数 + res = float("inf") + Sum = 0 + index = 0 + for i in range(len(nums)): + Sum += nums[i] + while Sum >= s: + res = min(res, i-index+1) + Sum -= nums[index] + index += 1 + return 0 if res==float("inf") else res +``` + Go: ```go diff --git a/problems/0494.目标和.md b/problems/0494.目标和.md index 84f99b1d..a9ddc768 100644 --- a/problems/0494.目标和.md +++ b/problems/0494.目标和.md @@ -19,15 +19,15 @@ 示例: -输入:nums: [1, 1, 1, 1, 1], S: 3 -输出:5 -解释: +输入:nums: [1, 1, 1, 1, 1], S: 3 +输出:5 --1+1+1+1+1 = 3 -+1-1+1+1+1 = 3 -+1+1-1+1+1 = 3 -+1+1+1-1+1 = 3 -+1+1+1+1-1 = 3 +解释: +-1+1+1+1+1 = 3 ++1-1+1+1+1 = 3 ++1+1-1+1+1 = 3 ++1+1+1-1+1 = 3 ++1+1+1+1-1 = 3 一共有5种方法让最终目标和为3。 diff --git a/problems/0669.修剪二叉搜索树.md b/problems/0669.修剪二叉搜索树.md index 0b49bea2..06d99b9d 100644 --- a/problems/0669.修剪二叉搜索树.md +++ b/problems/0669.修剪二叉搜索树.md @@ -265,7 +265,9 @@ class Solution { ``` Python: + ```python3 + # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): diff --git a/problems/背包总结篇.md b/problems/背包总结篇.md index c04dfbec..0dd407ac 100644 --- a/problems/背包总结篇.md +++ b/problems/背包总结篇.md @@ -95,18 +95,6 @@ -## 其他语言版本 - - -Java: - - -Python: - - -Go: - - -----------------------