[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;
}
}