题目描述:
代码:
class Solution {
public int maxSubArray(int[] nums) {
int sum=0,max=nums[0];
for(int i=0;i<nums.length;i++){
sum=Math.max(nums[i],nums[i]+sum);
max=Math.max(max,sum);
}
return max;
}
}
思路:
问题描述:
代码:
class Solution {
public int maxSubarraySumCircular(int[] nums) {
int sum=0,valMax=nums[0],valMin=nums[0],preMax=0,preMin=0;
for(int num:nums){
sum+=num;
preMax=Math.max(preMax+num,num);
valMax=Math.max(valMax,preMax);
preMin=Math.min(preMin+num,num);
valMin=Math.min(valMin,preMin);
}
if(valMax<0){
return valMax;
}
return Math.max(sum-valMin,valMax);
}
}
思路: