LeetCode53最大子序和
阿新 • • 發佈:2018-11-22
int maxSubArray(int* nums, int numsSize) { if(numsSize == 1) //陣列中只有一個數時返回第一個數 return nums[0]; int i = 0; int max = nums[0]; int sum = 0; for(i; i < numsSize; i++) //查詢陣列中的最大值,和最大的子串必定包含最大值 { if(max < nums[i]) max = nums[i]; } if(max <= 0) return max; //若最大值為負直接返回最大值 int j =0; while(j < numsSize){ sum += nums[j]; if(sum >= 0){ //和大於零時判斷是否大於最大值 if(max < sum) max = sum; } else //和小於零時重新求和 sum = 0; ++j; } return max; }