// 设 [1:n] 的最大子数组为 [i:j], 则 [1:n+1] 的最大子数组为 // [i:j] 或 [k:n+1] (1 ≤ k ≤ n+1) // 设 [1:n] 中右边界为 n 的最大子数组为 [k:n], 则 [1:n+1] 中右边界为 n+1 // 的最大子数组为 // [k:n+1], 若 sum[k:n] > 0 // [n+1:n+1], else MAXIMUM-SUBARRAY(A): k, ksum = 1, A[1] lo, hi, sum = 1, 1, A[1] for n = 2 to A.length: if ksum > 0: ksum += A[n] else: k = n ksum = A[n] if ksum > sum: lo, hi, sum = k, n, ksum return lo, hi, sum