Kadane算法

Kadane算法用于解决连续子数组最大和问题,我们用ci来表示数组a[0...i]的最大和。

观察可以发现当ci-1 < 0时,c= ai。用e表示以当前为结束的子数组的最大和,以替代数组c;那么: e = max(e,e+ai)。

//int [] arr = new int [size]
public int kadane(int [] arr){
      int max_ending_here = arr[0];
      int max_so_far = arr[0];
      for(int i = 0; i < arr.length; i++){
            max_ending_here = Math.max(arr[i],arr[i]+max_ending_here);
            max_so_far = Math.max(max_so_far,max_ending_here);
      }
      return max_so_far;
}

  

posted on 2018-03-10 16:24  在路上-j  阅读(373)  评论(0编辑  收藏  举报