最大字段和算法:
这个算法在本学期的课程中,已经稍作了解。不过印象不够深刻。今天重新复习一下,加深理解。
最大字段和,无非就是三种情况:
①MAX在左半部分
②MAX在右半部分
③MAX在中间
①②均可以使用递归来解决,情况三也并不是很复杂。先附上代码,然后逐条解释。
public class Solution
{
public int maxSubArray(int[] nums)
{
if(nums.length==0)
{
return 0;
}
return helper(nums,0,nums.length-1);
}
public int helper(int[] nums, int left, int right)
{
//做第一步判断
if(left>=right)
{
return nums[left];
}
//接下来分别考虑左右两部分,递归方法进行解决
int mid=left+(right-left)/2;
int leftmax=helper(nums,left,mid-1);
int rightmax=helper(num//,mid+1,right);
//接下来记录中间值mid,中间值单独留出来即可,留作第三种情况进行处理
int max=nums[mid];
//暂存max,之所已暂存,只是为了方便
int t=max;