题解 | #牛群的能量#
牛群的能量
https://www.nowcoder.com/practice/00f87ddcd18842d0824d487fd70a730e?tpId=354&tqId=10594767&ru=/exam/oj/ta&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D354
package main
import (
"math"
)
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param energy int整型一维数组
* @return int整型
*/
func maxEnergy( energy []int ) int {
// write code here
res:=math.MinInt32
cur:=0
for _,v:=range energy{
if cur + v < 0{
res = max(v,res)
cur = 0
}else{
cur = cur+v
res = max(cur,res)
}
}
return res
}
func max(a,b int)int{
if a>b {
return a
}
return b
}
考察点:遍历
解题思路:
用一个res来存放最终的结果,用cur来存放当前的结果,从左到右遍历,一边遍历一边判断cur+当前位置的值是否<0,如果小于0就以为着前面的都可以舍弃了,让res = max(当前位置的值,res)防止数组全是小于0的值,然后让cur=0。如果大于0就说明前面部分对与后面的值还有用,就让cur = cur+当前位置的值,并 res = max(cur,res) 更新res。


查看2道真题和解析