From 78bfec77ad2e9800d6cc4980a9ed936286128836 Mon Sep 17 00:00:00 2001 From: youngyangyang04 <826123027@qq.com> Date: Thu, 25 Nov 2021 11:20:04 +0800 Subject: [PATCH] Update --- problems/0134.加油站.md | 48 ++++++++++++++----------------- problems/0135.分发糖果.md | 24 ++++++++-------- problems/0860.柠檬水找零.md | 46 ++++++++++++++--------------- problems/动态规划总结篇.md | 5 ++++ 4 files changed, 62 insertions(+), 61 deletions(-) diff --git a/problems/0134.加油站.md b/problems/0134.加油站.md index 7d702f42..c274bd78 100644 --- a/problems/0134.加油站.md +++ b/problems/0134.加油站.md @@ -5,7 +5,7 @@

参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!

-## 134. 加油站 +# 134. 加油站 [力扣题目链接](https://leetcode-cn.com/problems/gas-station/) @@ -23,32 +23,27 @@ 示例 1: 输入: -gas = [1,2,3,4,5] -cost = [3,4,5,1,2] +* gas = [1,2,3,4,5] +* cost = [3,4,5,1,2] 输出: 3 解释: -从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油 -开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油 -开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油 -开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油 -开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油 -开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。 -因此,3 可为起始索引。 +* 从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油 +* 开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油 +* 开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油 +* 开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油 +* 开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油 +* 开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。 +* 因此,3 可为起始索引。 示例 2: 输入: -gas = [2,3,4] -cost = [3,4,3] +* gas = [2,3,4] +* cost = [3,4,3] -输出: -1 -解释: -你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。 -我们从 2 号加油站出发,可以获得 4 升汽油。 此时油箱有 = 0 + 4 = 4 升汽油 -开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油 -开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油 -你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。 -因此,无论怎样,你都不可能绕环路行驶一周。 +* 输出: -1 +* 解释: +你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。我们从 2 号加油站出发,可以获得 4 升汽油。 此时油箱有 = 0 + 4 = 4 升汽油。开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。因此,无论怎样,你都不可能绕环路行驶一周。 ## 暴力方法 @@ -196,7 +191,7 @@ public: ## 其他语言版本 -Java: +### Java ```java // 解法1 class Solution { @@ -239,8 +234,9 @@ class Solution { return index; } } -``` -Python: +``` + +### Python ```python class Solution: def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int: @@ -257,7 +253,7 @@ class Solution: return start ``` -Go: +### Go ```go func canCompleteCircuit(gas []int, cost []int) int { curSum := 0 @@ -278,7 +274,7 @@ func canCompleteCircuit(gas []int, cost []int) int { } ``` -Javascript: +### Javascript 暴力: ```js var canCompleteCircuit = function(gas, cost) { @@ -343,7 +339,7 @@ var canCompleteCircuit = function(gas, cost) { }; ``` -C: +### C ```c int canCompleteCircuit(int* gas, int gasSize, int* cost, int costSize){ int curSum = 0; diff --git a/problems/0135.分发糖果.md b/problems/0135.分发糖果.md index 76453c62..2dad6845 100644 --- a/problems/0135.分发糖果.md +++ b/problems/0135.分发糖果.md @@ -5,7 +5,7 @@

参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!

-## 135. 分发糖果 +# 135. 分发糖果 [力扣题目链接](https://leetcode-cn.com/problems/candy/) @@ -19,15 +19,14 @@ 那么这样下来,老师至少需要准备多少颗糖果呢? 示例 1: -输入: [1,0,2] -输出: 5 -解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。 +* 输入: [1,0,2] +* 输出: 5 +* 解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。 示例 2: -输入: [1,2,2] -输出: 4 -解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。 -第三个孩子只得到 1 颗糖果,这已满足上述两个条件。 +* 输入: [1,2,2] +* 输出: 4 +* 解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这已满足上述两个条件。 ## 思路 @@ -127,7 +126,7 @@ public: ## 其他语言版本 -Java: +### Java ```java class Solution { /** @@ -161,7 +160,7 @@ class Solution { } ``` -Python: +### Python ```python class Solution: def candy(self, ratings: List[int]) -> int: @@ -175,7 +174,7 @@ class Solution: return sum(candyVec) ``` -Go: +### Go ```golang func candy(ratings []int) int { /**先确定一边,再确定另外一边 @@ -213,7 +212,8 @@ func findMax(num1 int ,num2 int) int{ return num2 } ``` -Javascript: + +### Javascript: ```Javascript var candy = function(ratings) { let candys = new Array(ratings.length).fill(1) diff --git a/problems/0860.柠檬水找零.md b/problems/0860.柠檬水找零.md index 3a36d128..feb2f5a0 100644 --- a/problems/0860.柠檬水找零.md +++ b/problems/0860.柠檬水找零.md @@ -5,7 +5,7 @@

参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!

-## 860.柠檬水找零 +# 860.柠檬水找零 [力扣题目链接](https://leetcode-cn.com/problems/lemonade-change/) @@ -20,30 +20,30 @@ 如果你能给每位顾客正确找零,返回 true ,否则返回 false 。 示例 1: -输入:[5,5,5,10,20] -输出:true -解释: -前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。 -第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。 -第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。 -由于所有客户都得到了正确的找零,所以我们输出 true。 +* 输入:[5,5,5,10,20] +* 输出:true +* 解释: + * 前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。 + * 第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。 + * 第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。 + * 由于所有客户都得到了正确的找零,所以我们输出 true。 示例 2: -输入:[5,5,10] -输出:true +* 输入:[5,5,10] +* 输出:true 示例 3: -输入:[10,10] -输出:false +* 输入:[10,10] +* 输出:false 示例 4: -输入:[5,5,10,10,20] -输出:false -解释: -前 2 位顾客那里,我们按顺序收取 2 张 5 美元的钞票。 -对于接下来的 2 位顾客,我们收取一张 10 美元的钞票,然后返还 5 美元。 -对于最后一位顾客,我们无法退回 15 美元,因为我们现在只有两张 10 美元的钞票。 -由于不是每位顾客都得到了正确的找零,所以答案是 false。 +* 输入:[5,5,10,10,20] +* 输出:false +* 解释: + * 前 2 位顾客那里,我们按顺序收取 2 张 5 美元的钞票。 + * 对于接下来的 2 位顾客,我们收取一张 10 美元的钞票,然后返还 5 美元。 + * 对于最后一位顾客,我们无法退回 15 美元,因为我们现在只有两张 10 美元的钞票。 + * 由于不是每位顾客都得到了正确的找零,所以答案是 false。 提示: @@ -124,7 +124,7 @@ public: ## 其他语言版本 -Java: +### Java ```java class Solution { public boolean lemonadeChange(int[] bills) { @@ -153,7 +153,7 @@ class Solution { } ``` -Python: +### Python ```python class Solution: def lemonadeChange(self, bills: List[int]) -> bool: @@ -179,7 +179,7 @@ class Solution: ``` -Go: +### Go ```golang func lemonadeChange(bills []int) bool { @@ -221,7 +221,7 @@ func lemonadeChange(bills []int) bool { } ``` -Javascript: +### Javascript ```Javascript var lemonadeChange = function(bills) { let fiveCount = 0 diff --git a/problems/动态规划总结篇.md b/problems/动态规划总结篇.md index 5ba23d11..f4c737f7 100644 --- a/problems/动态规划总结篇.md +++ b/problems/动态规划总结篇.md @@ -115,6 +115,11 @@ 能把本篇中列举的题目都研究通透的话,你的动规水平就已经非常高了。 对付面试已经足够! + +![](https://code-thinking-1253855093.file.myqcloud.com/pics/20211121223754.png) + +这个图是 [代码随想录知识星球](https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ) 成员:[青](https://wx.zsxq.com/dweb2/index/footprint/185251215558842),所画,总结的非常好,分享给大家。 + 这已经是全网对动规最深刻的讲解系列了。 **其实大家去网上搜一搜也可以发现,能把动态规划讲清楚的资料挺少的,因为动规确实很难!要给别人讲清楚更难!**