[LeetCode] #122 Best Time to Buy and Sell Stock II 解題

題目連結

題型解說

這是一題難度為簡單的題目

需要設計一個方法,此方法會傳入一個整數陣列 prices

這個陣列表示每一天的股票價格,若可以購買無數次(買入 + 賣出)

回傳最大利潤是多少

解題思路

這一題是 [LeetCode] #121 Best Time to Buy and Sell Stock 解題 的延伸

上一題是要求只能買一次,這一題是可以買無數次

但規則一樣是手頭有買入的股票前不能再買入

一開始解法是把所有的狀況走一遍,找出利潤最好的那個

後來看了官方提供的思路,其實只要用迴圈歷遍一次,只要比明天的價格低就把差價算到利潤去

因為最大的利潤可以拆成多個小利潤的和

程式碼

Java

class Solution {
    public int maxProfit(int[] prices) {
        int resule = 0;
        for (int i = 0; i < prices.length - 1; ++i) {
            if (prices[i + 1] > prices[i]) {
                resule += prices[i + 1] - prices[i];
            }
        }
        return resule;
    }
}