mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
Merge branch 'master' of https://github.com/youngyangyang04/leetcode-master
This commit is contained in:
@ -175,7 +175,43 @@ class Solution:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
```golang
|
||||||
|
func candy(ratings []int) int {
|
||||||
|
/**先确定一边,再确定另外一边
|
||||||
|
1.先从左到右,当右边的大于左边的就加1
|
||||||
|
2.再从右到左,当左边的大于右边的就再加1
|
||||||
|
**/
|
||||||
|
need:=make([]int,len(ratings))
|
||||||
|
sum:=0
|
||||||
|
//初始化(每个人至少一个糖果)
|
||||||
|
for i:=0;i<len(ratings);i++{
|
||||||
|
need[i]=1
|
||||||
|
}
|
||||||
|
//1.先从左到右,当右边的大于左边的就加1
|
||||||
|
for i:=0;i<len(ratings)-1;i++{
|
||||||
|
if ratings[i]<ratings[i+1]{
|
||||||
|
need[i+1]=need[i]+1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//2.再从右到左,当左边的大于右边的就右边加1,但要花费糖果最少,所以需要做下判断
|
||||||
|
for i:=len(ratings)-1;i>0;i--{
|
||||||
|
if ratings[i-1]>ratings[i]{
|
||||||
|
need[i-1]=findMax(need[i-1],need[i]+1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//计算总共糖果
|
||||||
|
for i:=0;i<len(ratings);i++{
|
||||||
|
sum+=need[i]
|
||||||
|
}
|
||||||
|
return sum
|
||||||
|
}
|
||||||
|
func findMax(num1 int ,num2 int) int{
|
||||||
|
if num1>num2{
|
||||||
|
return num1
|
||||||
|
}
|
||||||
|
return num2
|
||||||
|
}
|
||||||
|
```
|
||||||
Javascript:
|
Javascript:
|
||||||
```Javascript
|
```Javascript
|
||||||
var candy = function(ratings) {
|
var candy = function(ratings) {
|
||||||
|
@ -38,7 +38,7 @@ https://leetcode-cn.com/problems/implement-stack-using-queues/
|
|||||||
|
|
||||||
**队列模拟栈,其实一个队列就够了**,那么我们先说一说两个队列来实现栈的思路。
|
**队列模拟栈,其实一个队列就够了**,那么我们先说一说两个队列来实现栈的思路。
|
||||||
|
|
||||||
**队列是先进先出的规则,把一个队列中的数据导入另一个队列中,数据的顺序并没有变,并有变成先进后出的顺序。**
|
**队列是先进先出的规则,把一个队列中的数据导入另一个队列中,数据的顺序并没有变,并没有变成先进后出的顺序。**
|
||||||
|
|
||||||
所以用栈实现队列, 和用队列实现栈的思路还是不一样的,这取决于这两个数据结构的性质。
|
所以用栈实现队列, 和用队列实现栈的思路还是不一样的,这取决于这两个数据结构的性质。
|
||||||
|
|
||||||
|
@ -183,6 +183,45 @@ class Solution:
|
|||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
|
||||||
|
```golang
|
||||||
|
func lemonadeChange(bills []int) bool {
|
||||||
|
//left表示还剩多少 下表0位5元的个数 ,下表1为10元的个数
|
||||||
|
left:=[2]int{0,0}
|
||||||
|
//第一个元素不为5,直接退出
|
||||||
|
if bills[0]!=5{
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
for i:=0;i<len(bills);i++{
|
||||||
|
//先统计5元和10元的个数
|
||||||
|
if bills[i]==5{
|
||||||
|
left[0]+=1
|
||||||
|
}
|
||||||
|
if bills[i]==10{
|
||||||
|
left[1]+=1
|
||||||
|
}
|
||||||
|
//接着处理找零的
|
||||||
|
tmp:=bills[i]-5
|
||||||
|
if tmp==5{
|
||||||
|
if left[0]>0{
|
||||||
|
left[0]-=1
|
||||||
|
}else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if tmp==15{
|
||||||
|
if left[1]>0&&left[0]>0{
|
||||||
|
left[0]-=1
|
||||||
|
left[1]-=1
|
||||||
|
}else if left[1]==0&&left[0]>2{
|
||||||
|
left[0]-=3
|
||||||
|
}else{
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Javascript:
|
Javascript:
|
||||||
```Javascript
|
```Javascript
|
||||||
|
Reference in New Issue
Block a user