代码如下
func candy(ratings []int) int {
need := make([]int ,len(ratings))
sum := 0
for i := 0 ; i < len(ratings) ; i++ { //初始化每个孩子的糖果数为1
need[i] = 1
}
for i := 0 ; i < len(ratings)-1 ; i++ { //从左往右遍历,如果右边比左边大,则右边加1
if ratings[i] < ratings[i+1] { //因为开始比较的是rating[0]和rating[1],所以循环结束是倒数第二个元素
need[i+1] = need[i] + 1
}
}
for i := len(ratings)-1 ; i > 0 ; i-- { //同理从右往左遍历
if ratings[i-1] > ratings[i] {
need[i-1] = max(need[i-1],need[i]+1)
}
}
for i := 0 ; i < len(ratings) ; i++ { //遍历结束求总和
sum += need[i]
}
return sum
}
func max(a,b int) int {
if a > b {
return a
}else {
return b
}
860 柠檬水找零
代码如下
func lemonadeChange(bills []int) bool {
money5 := 0
money10 := 0
一共分为三种情况
for i := 0 ; i < len(bills) ; i++ {
if bills[i] == 5 { // 第一种如果是5元则直接5元数量加1
money5 ++
}
if bills[i] == 10 { //如果是10元
money10 ++
if money5 >= 1 { //则判断5元数量是否大于等于1,如果大于等于1说明可以找零,5元数量减1
money5--
}else { //如果五元数量不够,直接return false
return false
}
}
if bills[i] == 20 { //如果是20元,找零有两种情况
if money10 >= 1 && money5 >= 1 { //一种是10元大于等于1 ,5元大于等于1
money10--
money5--
}else if money5 >= 3 { //另外一种是5元数量大于等于3
money5 -= 3
}else {
return false
}
}
}
return true
}
}