สมมติว่าเรามีรายการราคาที่แสดงราคาหุ้นของบริษัทตามลำดับเวลา เราต้องหากำไรสูงสุดที่เราสามารถทำได้จากการซื้อและขายหุ้นนั้นเพียงครั้งเดียว เราต้องจำไว้ว่าเราต้องซื้อก่อนจึงจะขายได้
ดังนั้น หากอินพุตเป็นเหมือนราคา =[10, 12, 9, 6, 8, 12] ผลลัพธ์จะเป็น 6 เนื่องจากเราสามารถซื้อที่ 6 และขายที่ 12
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- max_profit :=0
- min_stock :=อินฟินิตี้
- สำหรับแต่ละราคาในราคา ทำ
- max_profit :=สูงสุดของ max_profit และ (ราคา - min_stock)
- min_stock :=ขั้นต่ำของ min_stock และราคา
- คืน max_profit
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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]))
อินพุต
[10, 12, 9, 6, 8, 12]
ผลลัพธ์
6