Lintcode150 Best Time to Buy and Sell Stock II solution 題解

【題目描述】

Say you have an array for which theith element is the price of a given stock on day?i.

Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, buy one and sell one share of the stock multiple times). However, you may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

假設有一個數組,它的第i個元素是一個給定的股票在第i天的價格。設計一個算法來找到最大的利潤。你可以完成盡可能多的交易(多次買賣股票)。然而,你不能同時參與多個交易(你必須在再次購買前出售股票)。

【題目鏈接】

www.lintcode.com/en/problem/best-time-to-buy-and-sell-stock-ii/

【題目解析】

賣股票系列之二,允許進行多次交易,但是不允許同時進行多筆交易。直覺上我們可以找到連續的多對波谷波峰,在波谷買入,波峰賣出,穩賺不賠~。那么這樣是否比只在一個差值最大的波谷波峰處交易賺的多呢?即比上題的方案賺的多。簡單的證明可先假設存在一單調上升區間,若人為改變單調區間使得區間內存在不少于一對波谷波峰,那么可以得到進行兩次交易的差值之和比單次交易大,證畢。

計算所有連續波谷波峰的差值之和。需要遍歷求得所有波谷波峰的值嗎?其實可以把數組看成時間序列,只需要計算相鄰序列的差值即可,只累加大于0的差值。

【參考答案】

www.jiuzhang.com/solutions/best-time-to-buy-and-sell-stock-ii/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容