1.题目
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
示例 2:
输入:nums = [1]
输出:1
示例 3:
输入:nums = [0]
输出:0
示例 4:
输入:nums = [-1]
输出:-1
示例 5:
输入:nums = [-100000]
输出:-100000
2.题目解析
- 首先定义一个慢指针和快指针,慢指针指向第一个数组的数,快指针指向慢指针的后面数组,把所有的子数列全部表示再相加。
- 下一次慢指针加1,快指针继续遍历数组,把所有的子数列罗列出来加加。
- 重复2步骤,直到找出最大的max。
图文解析:
3.代码
int maxSubArray(int* nums, int numsSize)
{
int i,j;
int max=nums[0],sum=0;
for(i=0;i<numsSize;i++)
{
sum=0;
for(j=i;j<numsSize;j++)
{
sum=sum+nums[j];
if(sum>=max)
{
max=sum;
}
}
}
return max;
}