1. 程式人生 > >Leetcode題解之陣列(2) 買賣股票的最佳時機 II

Leetcode題解之陣列(2) 買賣股票的最佳時機 II

題目描述:

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。

設計一個演算法來計算你所能獲取的最大利潤。你可以儘可能地完成更多的交易(多次買賣一支股票)。

注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。

解題思路:

首先,不要想的太複雜了,由於可已多次買賣。所以只要前一天比後一天便宜那麼久進行交易。也就是能賺錢的時候都進行交易。

不要被例項3 的[1,2,3,4,5]誤導了。

2-1+3-2+4-3+5-4=5-1 也就是第一天買入最後一天賣出,其實和每天都進行買入賣出一個道理。

程式碼:

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

反思:剛開始由於看了案例三,錯誤的以為,一天只能進行一種交易,要麼買入要麼賣出。想複雜了,所以審題要仔細。