This commit is contained in:
youngyangyang04
2021-11-25 11:20:04 +08:00
parent b697353cbd
commit 78bfec77ad
4 changed files with 62 additions and 61 deletions

View File

@ -5,7 +5,7 @@
<p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p> <p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
## 134. 加油站 # 134. 加油站
[力扣题目链接](https://leetcode-cn.com/problems/gas-station/) [力扣题目链接](https://leetcode-cn.com/problems/gas-station/)
@ -23,32 +23,27 @@
示例 1: 示例 1:
输入: 输入:
gas = [1,2,3,4,5] * gas = [1,2,3,4,5]
cost = [3,4,5,1,2] * cost = [3,4,5,1,2]
输出: 3 输出: 3
解释: 解释:
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油 * 从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油
开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油 * 开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油
开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油 * 开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油
开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油 * 开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油
开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油 * 开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油
开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。 * 开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。
因此3 可为起始索引。 * 因此3 可为起始索引。
示例 2: 示例 2:
输入: 输入:
gas = [2,3,4] * gas = [2,3,4]
cost = [3,4,3] * cost = [3,4,3]
输出: -1 * 输出: -1
解释: * 解释:
你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。 你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。我们从 2 号加油站出发,可以获得 4 升汽油。 此时油箱有 = 0 + 4 = 4 升汽油。开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。因此,无论怎样,你都不可能绕环路行驶一周。
我们从 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 ```java
// 解法1 // 解法1
class Solution { class Solution {
@ -239,8 +234,9 @@ class Solution {
return index; return index;
} }
} }
``` ```
Python
### Python
```python ```python
class Solution: class Solution:
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int: def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
@ -257,7 +253,7 @@ class Solution:
return start return start
``` ```
Go ### Go
```go ```go
func canCompleteCircuit(gas []int, cost []int) int { func canCompleteCircuit(gas []int, cost []int) int {
curSum := 0 curSum := 0
@ -278,7 +274,7 @@ func canCompleteCircuit(gas []int, cost []int) int {
} }
``` ```
Javascript: ### Javascript
暴力: 暴力:
```js ```js
var canCompleteCircuit = function(gas, cost) { var canCompleteCircuit = function(gas, cost) {
@ -343,7 +339,7 @@ var canCompleteCircuit = function(gas, cost) {
}; };
``` ```
C: ### C
```c ```c
int canCompleteCircuit(int* gas, int gasSize, int* cost, int costSize){ int canCompleteCircuit(int* gas, int gasSize, int* cost, int costSize){
int curSum = 0; int curSum = 0;

View File

@ -5,7 +5,7 @@
<p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p> <p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
## 135. 分发糖果 # 135. 分发糖果
[力扣题目链接](https://leetcode-cn.com/problems/candy/) [力扣题目链接](https://leetcode-cn.com/problems/candy/)
@ -19,15 +19,14 @@
那么这样下来,老师至少需要准备多少颗糖果呢? 那么这样下来,老师至少需要准备多少颗糖果呢?
示例 1: 示例 1:
输入: [1,0,2] * 输入: [1,0,2]
输出: 5 * 输出: 5
解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。 * 解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。
示例 2: 示例 2:
输入: [1,2,2] * 输入: [1,2,2]
输出: 4 * 输出: 4
解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。 * 解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这已满足上述两个条件。
第三个孩子只得到 1 颗糖果,这已满足上述两个条件。
## 思路 ## 思路
@ -127,7 +126,7 @@ public:
## 其他语言版本 ## 其他语言版本
Java ### Java
```java ```java
class Solution { class Solution {
/** /**
@ -161,7 +160,7 @@ class Solution {
} }
``` ```
Python ### Python
```python ```python
class Solution: class Solution:
def candy(self, ratings: List[int]) -> int: def candy(self, ratings: List[int]) -> int:
@ -175,7 +174,7 @@ class Solution:
return sum(candyVec) return sum(candyVec)
``` ```
Go ### Go
```golang ```golang
func candy(ratings []int) int { func candy(ratings []int) int {
/**先确定一边,再确定另外一边 /**先确定一边,再确定另外一边
@ -213,7 +212,8 @@ func findMax(num1 int ,num2 int) int{
return num2 return num2
} }
``` ```
Javascript:
### Javascript:
```Javascript ```Javascript
var candy = function(ratings) { var candy = function(ratings) {
let candys = new Array(ratings.length).fill(1) let candys = new Array(ratings.length).fill(1)

View File

@ -5,7 +5,7 @@
<p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p> <p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
## 860.柠檬水找零 # 860.柠檬水找零
[力扣题目链接](https://leetcode-cn.com/problems/lemonade-change/) [力扣题目链接](https://leetcode-cn.com/problems/lemonade-change/)
@ -20,30 +20,30 @@
如果你能给每位顾客正确找零返回 true 否则返回 false  如果你能给每位顾客正确找零返回 true 否则返回 false 
示例 1 示例 1
输入:[5,5,5,10,20] * 输入:[5,5,5,10,20]
输出true * 输出true
解释: * 解释:
前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。 * 前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。
第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。 * 第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。
第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。 * 第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。
由于所有客户都得到了正确的找零,所以我们输出 true。 * 由于所有客户都得到了正确的找零,所以我们输出 true。
示例 2 示例 2
输入:[5,5,10] * 输入:[5,5,10]
输出true * 输出true
示例 3 示例 3
输入:[10,10] * 输入:[10,10]
输出false * 输出false
示例 4 示例 4
输入:[5,5,10,10,20] * 输入:[5,5,10,10,20]
输出false * 输出false
解释: * 解释:
前 2 位顾客那里,我们按顺序收取 2 张 5 美元的钞票。 * 前 2 位顾客那里,我们按顺序收取 2 张 5 美元的钞票。
对于接下来的 2 位顾客,我们收取一张 10 美元的钞票,然后返还 5 美元。 * 对于接下来的 2 位顾客,我们收取一张 10 美元的钞票,然后返还 5 美元。
对于最后一位顾客,我们无法退回 15 美元,因为我们现在只有两张 10 美元的钞票。 * 对于最后一位顾客,我们无法退回 15 美元,因为我们现在只有两张 10 美元的钞票。
由于不是每位顾客都得到了正确的找零,所以答案是 false。 * 由于不是每位顾客都得到了正确的找零,所以答案是 false。
提示: 提示:
@ -124,7 +124,7 @@ public:
## 其他语言版本 ## 其他语言版本
Java ### Java
```java ```java
class Solution { class Solution {
public boolean lemonadeChange(int[] bills) { public boolean lemonadeChange(int[] bills) {
@ -153,7 +153,7 @@ class Solution {
} }
``` ```
Python ### Python
```python ```python
class Solution: class Solution:
def lemonadeChange(self, bills: List[int]) -> bool: def lemonadeChange(self, bills: List[int]) -> bool:
@ -179,7 +179,7 @@ class Solution:
``` ```
Go ### Go
```golang ```golang
func lemonadeChange(bills []int) bool { func lemonadeChange(bills []int) bool {
@ -221,7 +221,7 @@ func lemonadeChange(bills []int) bool {
} }
``` ```
Javascript: ### Javascript
```Javascript ```Javascript
var lemonadeChange = function(bills) { var lemonadeChange = function(bills) {
let fiveCount = 0 let fiveCount = 0

View File

@ -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),所画,总结的非常好,分享给大家。
这已经是全网对动规最深刻的讲解系列了。 这已经是全网对动规最深刻的讲解系列了。
**其实大家去网上搜一搜也可以发现,能把动态规划讲清楚的资料挺少的,因为动规确实很难!要给别人讲清楚更难!** **其实大家去网上搜一搜也可以发现,能把动态规划讲清楚的资料挺少的,因为动规确实很难!要给别人讲清楚更难!**