輸入多組測資,每組 n 個整數(n ≤ 100,000,值域 [-1000, 1000]),輸出最大連續子陣列和及其起始、結束索引。若多解,輸出起始索引最小者。
int curSum = arr[0], maxSum = arr[0]; int curL = 0, maxL = 0, maxR = 0; for (int i=1; imaxSum) { maxSum = curSum; maxL = curL; maxR = i; } }
curSum < 0 時重置:捨棄前綴,從當前元素重新開始curL 追蹤當前候選區間起點> 更新最大值,保證同值時保留最早區間(符合題目「起始索引最小」)題目測資似乎只接受「前向最大區間」,對於 -1 0 5 0 0 期望輸出 5 1 2 而非 5 1 4,實作上以 curSum < 0 重置即符合。
Time: 450 ms, Memory: 1304 KB (C, 九度 OJ 1372)