题解 | #牛群的能量#

牛群的能量

https://www.nowcoder.com/practice/00f87ddcd18842d0824d487fd70a730e

考察的知识点:动态规划、双指针;

解答方法分析:

  1. 始化两个指针startend都指向能量列表的第一个元素。
  2. 初始化一个变量maxSum来保存能量值之和的最大值,初值为第一个元素的量值。
  3. 初始化一个变量currentSum来保存当前连续子的能量值之和初值为第一个元素的能量值。
  4. 循环遍历能量列表,从第二个元素开始:将当前元素的能量值加到currentSum上。如果currentSum大于maxSum,则更新maxSum的值。如果currentSum小于0,表示当前子群的能量值为负数,说明当前子群对总体能量没有贡献,将start指针移到下一个位置,并将currentSum重置为0。
  5. 循环结束后,maxSum即为能量值之和最大的连续群。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param energy int整型vector
     * @return int整型
     */
    int maxEnergy(vector<int>& energy) {
        int maxSum = INT_MIN;
        int currentSum = 0;
        for (int i = 0; i < energy.size(); i++) {
            currentSum += energy[i];
            if (currentSum > maxSum) {
                maxSum = currentSum;
            }
            if (currentSum < 0) {
                currentSum =
                    0;
            }
        }
        return maxSum;
    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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