[JavaScript] LeetCode 121. Best Time to Buy and Sell Stock

題目概要

給定一個陣列 prices,找出哪一天買入股票哪一天賣出能賺的利潤最多。如果無法獲取利潤就返回 0。

Example 1:

Input: prices = [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
Note that buying on day 2 and selling on day 1 is not allowed because you must buy before you sell.
Example 2:

Input: prices = [7,6,4,3,1]
Output: 0
Explanation: In this case, no transactions are done and the max profit = 0.

解題技巧

  • 買入必須在賣出之前。
  • 從 index 0 開始慢慢判斷,設 prices[0] 為最小值,而 0 為最大值,並遍歷 prices ,用當前值減去最小值來記錄利潤,如果利潤比當前最大值還大就存下來,最後返回最大利潤。

程式碼

var maxProfit = function(prices) {
    if (!prices.length) return 0;
    
    let min = prices[0];
    let max = 0;
    for (let i of prices) {
        min = Math.min(min, i);
        const profit = i - min;
        max = Math.max(max, profit);
    }
    
    return max;
};
image 2 [JavaScript] LeetCode 121. Best Time to Buy and Sell Stock
0 0 評分數
Article Rating
訂閱
通知
guest

0 Comments
在線反饋
查看所有評論