1. 程式人生 > >九章演算法面試題87 最小子陣列

九章演算法面試題87 最小子陣列

原文網址

問題詳情 

給定一個整數陣列,找到一個具有最小和的子陣列。返回其最小和。

線上評測本題:

http://www.lintcode.com/zh-cn/problem/minimum-subarray/


解答 

這道題和max subarray很類似,我用local 和 global 的dp方式闊以解決這道

那麼我們來看動態規劃的四個要素分別是什麼?

State:
localmin[i] 表示以當前第i個數最為結尾的最小連續子陣列和。
globalmin[i] 表示以當i個數裡面(可以不以第i個作為結尾)的最小連續子陣列和。

Function:
localmin[i] = min(localmin[i - 1] + nums.get(i), nums.get(i));
globalmin[i] = min(globalmin[i - 1], localmin[i]);

initialize:
globalmin[0] = localmin[0] = nums.get(0);

answer:
globalmin[n-1]/

優化:

由於這道題第i個狀態只跟i-1的狀態有關,所以這道題還可以用滾動陣列

參考程式碼:

http://www.jiuzhang.com/solutions/minimum-subarray/