1. 原题链接
https://leetcode.com/problems/maximum-subarray/discuss/
2. 题目要求
给定一个整型数组,返回其子串之和的最大值
例如,[-2,1,-3,4,-1,2,1,-5,4]中,[4,-1,2,1]可以构成最大子串之和6
3. 解题思路
对数组进行一次遍历,每次加入一个元素前,先判断其加入后累加和与该元素的大小,取最大者。然后每遍历一个元素,选取当前的最大子串之和。
4. 代码实现
public class MaximumSubarray53 {
public static void main(String[] args) {
int[] nums ={-2,1,-3,4,-1,2,1,-5,4};
System.out.println(maxSubArray(nums));
}
public static int maxSubArray(int[] nums){
int sumTemp =nums[0], maxRes = nums[0];
for(int i =1;i<nums.length;i++){
sumTemp = Math.max(sumTemp+nums[i],nums[i]);
maxRes = Math.max(sumTemp,maxRes);
}
return maxRes;
}
}