1. 程式人生 > >前端演算法:設計演算法以找到最大利潤。您可以根據需要完成儘可能多的交易(即,多次買入並賣出一股股票)

前端演算法:設計演算法以找到最大利潤。您可以根據需要完成儘可能多的交易(即,多次買入並賣出一股股票)

假設您有一個數組,其中第i個元素是第i天給定股票的價格。 設計演算法以找到最大利潤。您可以根據需要完成儘可能多的交易(即,多次買入並賣出一股股票)。 注意:您不能同時進行多筆交易(即,您必須在再次購買之前賣出股票)。

例1:
輸入: [7,1,5,3,6,4]
輸出: 7
說明:在第2天買入(價格= 1)並在第3天賣出(價格= 5),利潤= 5-1 = 4。
然後在第4天買入(價格= 3)並在第5天賣出(價格= 6),利潤= 6-3 = 3。
例2:
輸入: [1,2,3,4,5]
輸出: 4
說明:在第1天買入(價格= 1)並在第5天賣出(價格= 5),利潤= 5-1 = 4。
請注意,您不能在第1天購買、在第2天購買並在以後出售,就像您一樣
同時參與多個交易。您必須在再次購買之前出售。
例3:
輸入: [7,6,4,3,1]
輸出: 0
說明:在這種情況下,沒有進行任何交易,即最大利潤= 0。

<script>
    var maxProfit = function(prices) {
        var len = prices.length;
        if(len <= 1) return 0;
        var ret = 0;
        for(var i = 1; i < len; i++) {
            ret += Math.max(0, prices[i] - prices[i-1]);
        }
        return ret;
    };
    var data1 = [7,1,5,3,6,4];
    var data2 = [1,2,3,4,5,4,1,2,6];
    var data3 = [7,6,4,3,1];
    console.log(maxProfit(data1))
    console.log(maxProfit(data2))
    console.log(maxProfit(data3))
</script>