สมมติว่าเรามีรายการราคาที่แสดงราคาหุ้นของบริษัทตามลำดับเวลา เราต้องหากำไรสูงสุดที่เราสามารถทำได้จากการซื้อและขายหุ้นนั้นเพียงครั้งเดียว เราต้องจำไว้ว่าเราต้องซื้อก่อนจึงจะขายได้
ดังนั้น หากอินพุตเป็นเหมือนราคา =[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