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

題目連結

題型解說

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

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

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

回傳最大利潤是多少

解題思路

原本我是利用兩個索引左右移動想辦法找出最大利潤是哪一個

但總會有一些例外狀況導致算法不通過

這題想了很久也沒想出怎麼寫才是有效率的

後來就放棄去找答案,原來只要紀錄下當下最小值與最大利潤

下次遇到更小的值就更新一下,繼續計算最大利潤就好

程式碼

Java

class Solution {
    public int maxProfit(int[] prices) {
        int result = 0;
        int min = Integer.MAX_VALUE;
        
        for (int i = 0, len = prices.length; i < len; i++) {
            min = Math.min(min, prices[i]);
            result = Math.max(result, prices[i] - min);
        }
        
        return result;
    }
}