日期:2025年10月31日
ZeroJudge 題目連結:f935. 消失的二十年 - 續
解題想法
最低價 min_price 預設為第 0 天的價格,最大獲利 max_proift 預設為 0。依序讀取第 1 天到最後一天的價格 price,如果當天賣出的獲利大於目前的 max_profit,更新 max_profit、最低買價 buy、最高賣價 sell; 如果 price 小於 min_price,更新 min_price。最後如果找不到低於 min_price 的𧶠價,max_profit 等於 0,輸出 0 -1 -1; 反之,輸出 max_profit buy sell。
Python 程式碼
使用時間約為 0.8 s,記憶體約為 126.7 MB,通過測試。
prices = list(map(int, input().split())) # 每天的價格
min_price = prices[0] # 最低價格,預設為第 0 天的價格
max_profit = 0 # 最大獲利,預設為 0
buy = sell = -1 # 最大獲利對應的最低買價、最高賣價,預設為 -1
for price in prices[1:]: # 依序讀取讀取第 1 天到最後一天的價格
if price - min_price > max_profit: # 更高的獲利
max_profit = price - min_price # 更新最大獲利
buy = min_price # 更新最低買價
sell = price # 更新最高賣價
elif price < min_price: # 更低的價格
min_price = price # 更新最低價格
if max_profit == 0: print("0 -1 -1")
else: print(f"{max_profit:d} {buy:d} {sell:d}")