LeetCode Maximum Subarray

来源:互联网 发布:php foreach用法 编辑:程序博客网 时间:2024/06/14 18:18

description:
Given an array of integers, find a contiguous subarray which has the largest sum.

Notice

The subarray should contain at least one number.

Have you met this question in a real interview? Yes
Example
Given the array [−2,2,−3,4,−1,2,1,−5,3], the contiguous subarray [4,−1,2,1] has the largest sum = 6.

解题思路:使用滑窗法,进行处理。当算计算的值比原有的值小的时候,要进行最大值回滚。同时还要有一个全局的变量来进行最大值的记录。

public class Solution {    /**     * @param nums: A list of integers     * @return: A integer indicate the sum of max subarray     */    public int maxSubArray(int[] nums) {        // write your code        if (nums == null || nums.length == 0) {            return 0;        }        int max = Integer.MIN_VALUE;        int sum = 0;        for (int i = 0; i < nums.length; i++) {            sum += nums[i];            max = Math.max(sum, max);            sum = Math.max(0, sum);        }        return max;    }}
0 0