class Solution:
def maxArrayValue(self, nums: List[int]) -> int:
# 要求 大的合并 小的
for i in range(len(nums) - 2, -1,-1):
if nums[i] <= nums[i + 1]:
nums[i] += nums[i + 1]
return nums[0]
class Solution {
public:
long long maxArrayValue(vector<int>& nums) {
//贪心思路: 由于要求 后面大的才可以合并前面小的, 所以从后面遍历,且使后面的数尽量大。
// 注意 int 求和后 的溢出问题
long long ret = nums.back();
for (int i = nums.size() - 2; i >= 0; --i){
ret = nums[i] <= ret ? nums[i] + ret : nums[i];
}
return ret;
}
};