Kadane算法用于解决连续子数组最大和问题,我们用ci来表示数组a[0...i]的最大和。
观察可以发现当ci-1 < 0时,ci = 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; }