ให้ลิสต์ราคาหุ้น ซื้อขายได้เพียงครั้งเดียว (ซื้อก่อนขาย) หากำไรสูงสุด
ตัวอย่าง: [10,12,9,6,8,12] → 6 (ซื้อ 6 ขาย 12)
อัลกอริธึม One Pass
- ติดตาม
min_stockราคาต่ำสุดที่เคยเห็น - แต่ละราคา: อัปเดต
max_profit = max(max_profit, price - min_stock)และmin_stock = min(min_stock, price)
การนำไปใช้
class Solution:
def solve(self, prices):
max_profit = 0
min_stock = float('inf')
for price in prices:
max_profit = max(max_profit, price - min_stock)
min_stock = min(min_stock, price)
return max_profit
ob = Solution()
print(ob.solve([10, 12, 9, 6, 8, 12])) # 6