53. 最大子序和
问题描述:
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
题目链接:https://leetcode-cn.com/problems/maximum-subarray/
示例1
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
思路:
用一个maxSum记录遍历过的总体最大子序和,然后用maxTmp记录当前最大子序和,一次遍历即可求出答案。
时间复杂度O(n)
完整代码:
class Solution {
public int maxSubArray(int[] nums) {
int maxSum = nums[0];
int maxTmp = nums[0];
for(int i = 1;i < nums.length; i++) {
if(maxTmp <= 0) {
maxTmp = nums[i];
}else {
maxTmp += nums[i];
}
if(maxSum < maxTmp)
maxSum = maxTmp;
}
return maxSum;
}
}