题解 | #牛群的能量#
牛群的能量
https://www.nowcoder.com/practice/00f87ddcd18842d0824d487fd70a730e
考察的知识点:动态规划、双指针;
解答方法分析:
- 始化两个指针
start
和end
都指向能量列表的第一个元素。 - 初始化一个变量
maxSum
来保存能量值之和的最大值,初值为第一个元素的量值。 - 初始化一个变量
currentSum
来保存当前连续子的能量值之和初值为第一个元素的能量值。 - 循环遍历能量列表,从第二个元素开始:将当前元素的能量值加到currentSum上。如果currentSum大于maxSum,则更新maxSum的值。如果currentSum小于0,表示当前子群的能量值为负数,说明当前子群对总体能量没有贡献,将start指针移到下一个位置,并将currentSum重置为0。
- 循环结束后,
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; } };