Leetcode 剑指Offer42 连续最大子数组和
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)。
class Solution {
public int maxSubArray(int[] nums) {
int max = Integer.MIN_VALUE;
int n = nums.length;
int[] maxsum = new int[n];
maxsum[0] = nums[0];
max= max>maxsum[0]?max:maxsum[0];
for(int i=1;i<n;i++){
maxsum[i] = maxsum[i-1]+nums[i]>nums[i]?maxsum[i-1]+nums[i]:nums[i];
max = max>maxsum[i]?max:maxsum[i];
}
return max;
}
}
笔记:使用maxsum数组来存储当前元素的最大连续数组和,maxsum[i+1]=maxsum[i]+nums[i+1]>nums[i+1]maxsum[i]+nums[i+1]:nums[i+1]
番外:今天人生第一次面试,腾讯考了这道题,我知道超级超级超级简单,但当时就是写不出来,现在事后5分钟就写出来了,气死气死我了.果然凉凉.
1632

被折叠的 条评论
为什么被折叠?



