最终,取 max(左规则,右规则),才能同时满足左规则和右规则,得到结果如下图所示:
能做出来的难题
一、贪心
1.1 贪心
// go
func candy(ratings []int) int {
LEN := len(ratings)
// 初始化
left := make([]int, LEN)
right := make([]int, LEN)
for i := 0; i < LEN; i++ {
left[i] = 1
right[i] = 1
}
// 应用左规则
for i := 1; i < LEN; i++ {
if ratings[i] > ratings[i-1] {
left[i] = left[i-1] + 1
}
}
// 应用右规则
for i := LEN - 2; i >= 0; i-- {
if ratings[i] > ratings[i+1] {
right[i] = right[i+1] + 1
}
}
ans := 0
for i := 0; i < LEN; i++ {
v := max(left[i], right[i])
ans += v
}
return ans
}
二、多语言解法
C
/
G
/
P
y
t
n
/
R
u
t
/
J
/
T
// cpp
// go 同上
# python
// rust
// js
// ts
原文地址:https://blog.csdn.net/jiaoyangwm/article/details/134754481
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_27932.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。