给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 用c++
时间: 2023-05-30 16:05:46 浏览: 99
C语言求连续最大子数组和的方法
5星 · 资源好评率100%
语言实现的代码如下:
```c
#include <stdio.h>
#include <limits.h>
int maxSubArray(int* nums, int numsSize){
int maxSum = INT_MIN, curSum = 0;
for(int i = 0; i < numsSize; i++){
curSum += nums[i];
if(curSum > maxSum){
maxSum = curSum;
}
if(curSum < 0){
curSum = 0;
}
}
return maxSum;
}
int main(){
int nums[] = {-2,1,-3,4,-1,2,1,-5,4};
int numsSize = sizeof(nums) / sizeof(int);
int maxSum = maxSubArray(nums, numsSize);
printf("The maximum sum of contiguous subarray is %d\n", maxSum);
return 0;
}
```
解释:使用Kadane算法,初始化当前和curSum为0,最大和maxSum为INT_MIN。遍历数组,对于每个元素,将其加到curSum中,如果curSum大于maxSum,则更新maxSum。如果curSum小于0,则将其重置为0。最后返回maxSum即可。
阅读全文