题目介绍
暴力求解法
public class Solution {
public int MaxSubArray(int[] nums) {
int len=nums.Length;
if(len==0) return 0;
if(len==1)
return nums[0];
int max=int.MinValue;
for(int i=0;i<len;i++)
{
int add=nums[i];
if(add>max)
{
max=add;
}
for(int j=i+1;j<len;j++)
{
add+=nums[j];
if(add>max)
{
max=add;
}
}
}
return max;
}
}
实验结果
利用动态规划
public class Solution {
public int MaxSubArray(int[] nums) {
int len=nums.Length;
if(len==0) return 0;
if(len==1) return nums[0];
int[] max=new int[len];
max[0]=nums[0];
int m=max[0];
for(int i=1;i<len;i++)
{
if(max[i-1]+nums[i]>nums[i])
{
max[i]=max[i-1]+nums[i];
}
else
{
max[i]=nums[i];
}
if(max[i]>m)
{
m=max[i];
}
}
return m;
}
}
实验结果