前幾篇練習了陣列遍歷、找最大值和累加總和,熟悉了基本的C語言操作。今天這題要進一步在單次遍歷中同時追蹤最小值與最大差值,從「單一判斷」過渡到「多條件計算」,銜接前面的基礎練習,也能訓練我在迴圈中同時管理多個變數的邏輯。
LeetCode 121. Best Time to Buy and Sell Stock 題目說明:
給定一個陣列 prices,代表每天的股票價格,只能買一次、賣一次,求能得到的最大利潤。如果無法獲利,回傳 0,範例如下。
輸入:
prices = [7,1,5,3,6,4]
輸出:
5
解釋:
在第 2 天買 (price = 1),第 5 天賣 (price = 6),利潤 = 6 - 1 = 5。
解題思路
用 minPrice 記錄目前遇到的最低股價;用 maxProfit 記錄目前能獲得的最大利潤。
遍歷陣列:如果當天股價比 minPrice 低,更新 minPrice;計算當天股價減 minPrice 的利潤,如果比 maxProfit 大,更新 maxProfit。遍歷結束後,maxProfit 即為最大利潤。