题目为:
刚开始使用暴力求解的话,用max记录最大值,再设一个值记录当前数组和的值,通过比较求出最大子序和,但是时间复杂度和空间复杂度都很大,所以可以使用动态规划法,设置一个当前数current,若当前数与数组下一个之和大于0,则是对最大和有利且设置一个sum返回最大值,代码如下:
public class Solution {
public int MaxSubArray(int[] nums)
{ int current=nums[0];
int sum=nums[0];
for(int i=1;i<nums.Length;i++)
{
if(current<0)current=nums[i];
else current+=nums[i];
if(current>sum)sum=current;
}
return sum;
}}
运行结果为: