輸入一個整型數組,數組裏有正數也有負數。數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。
要求時間複雜度爲O(n)。
輸入: nums = [-2,1,-3,4,-1,2,1,-5,4]
輸出: 6
解釋: 連續子數組 [4,-1,2,1] 的和最大,爲 6。
//思路一
class Solution {
public int maxSubArray(int[] nums) {
int res=nums[0];
int max=nums[0];
for(int i=1;i<nums.length;i++){
/*
if(max<0){
max=nums[i];
}else{
max+=nums[i];
}
*/
max = Math.max(max + nums[i],nums[i]);
res=Math.max(res,max);
}
return res;
}
}
變形:max(0,子數組序列和)
```java
```java
public class Solution {
public int FindGreatestSumOfSubArray(int[] array) {
int maxsum=0;
for(int i=0;i<array.length;i++){
int thissum=0;
for(int j=i;j<array.length;j++){
thissum+=array[j];
if(thissum>maxsum)
maxsum=thissum;
}
}
return maxsum;
}
}
//複雜度O(n的三次方)