标签:
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
.
int maxSubArray(int* nums, int numsSize) { int max = 0, tmp = 0; if(numsSize == 0) return 0; max = tmp = nums[0]; for(int i = 1; i < numsSize; i++) { if(max < 0) //当一开始就为负时,没必要加了,只需要比较那个大;因为越加越小 { if(nums[i] > max) max= nums[i]; tmp = nums[i]; } else //出现了正数以后就可以比较最后一个和是否小于0;如果小于0就没比较继续加了,可以重新开始 { tmp += nums[i]; if(tmp < 0) tmp = 0; else if(max < tmp) max = tmp; } } return max; }
标签:
原文地址:http://www.cnblogs.com/dylqt/p/4985897.html