题解 | #牛群的能量#

牛群的能量

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。

全部评论

相关推荐

2025-12-17 12:08
门头沟学院 产品经理
牛客85811352...:1希音不知道算不算大厂 2完全符合,过得很舒服, 3确实只有杂活 领导找我续签到明年3、4月我要继续吗。主要是边实习边秋招这段时间还是有点累
什么是优秀的实习经历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务