53. Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4]
,
the contiguous subarray [4,-1,2,1]
has the largest sum = 6
.
Subscribe to see which companies asked this question.
题目简述:
找出数组中的一个最大子串的和
思路简述:
一开始看是easy,结果被难倒了。
参考 Kadane's algorithm算法
代码:
public class Solution {
//暴力搜索:超时
/*
public int maxSubArray(int[] nums) {
int maxNum = nums[0];
//时间复杂度O(N*2)
int temp=0;
for(int i=1;i<=nums.length;i++){
temp=0;
for(int k=0;k<i;k++){
temp += nums[k];
if(temp>maxNum){
maxNum = temp;
}
}
for(int j=i;j<nums.length;j++){
temp = temp-nums[j-i]+nums[j];
if(temp>maxNum){
maxNum = temp;
}
}
}
if(temp>maxNum){
maxNum = temp;
}
return maxNum;
}*/
public int maxSubArray(int[] nums) {
int sum=nums[0];
int maxNum = sum;
for(int i=1;i<nums.length;i++){
if(sum > 0){
sum += nums[i];
}else{
sum = nums[i];
}
if(sum > maxNum){
maxNum = sum;
}
}
return maxNum;
}
}
结果: