2789. 合并后数组中的最大元素

41 阅读1分钟

2789. 合并后数组中的最大元素

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]

image.png

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;        
    }
};