最大子数组和

贪心

遍历数组,记录之前和, 比较 当前元素 和 [当前元素+之前和],取当中最大值作为当前和,然后更新最大和: max = Math.max(max, 当前和);

public int maxSubArray(int[] nums) {
        int result = nums[0];
        int sum = 0;
        int pre;
        for(int num: nums) {
            pre = sum;
            sum = Math.max(num, num + pre);
            result = Math.max(result, sum);
        }
        return result;
    }

时间复杂度: O(n)
空间复杂度: O(1)

注: 之前和 = 上一轮遍历的当前和。

posted @ 2022-04-10 00:11  OraCat  阅读(1)  评论(0编辑  收藏  举报