Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหากำไรสูงสุดที่เราสามารถทำได้โดยการถือและขายกำไรใน Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums ซึ่งแสดงถึงราคาหุ้นของบริษัทหนึ่งๆ ตามลำดับเวลา เราสามารถซื้อหุ้นได้ไม่เกินหนึ่งหุ้นต่อวัน แต่คุณสามารถถือหุ้นหลายตัวและสามารถขายหุ้นได้กี่วันก็ได้ คืนกำไรสูงสุดที่คุณจะได้รับ

ดังนั้นหากอินพุตเป็นเหมือน nums =[3, 4, 7, 3, 5] แล้วผลลัพธ์จะเป็น 9 เพราะเราสามารถซื้อหุ้นที่ 3 และ 4 และขายที่ 7 แล้วซื้ออีกครั้งที่ 3 และ ขายที่ 5. กำไรรวม (7 - 3) + (7 - 4) + (5 - 3) =9.

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ตอบ :=0
  • ในขณะที่ nums ไม่ว่างเปล่า ให้ทำ
    • top :=ลบองค์ประกอบสุดท้ายออกจาก nums
    • ในขณะที่ nums ไม่ว่างเปล่าและด้านบน> องค์ประกอบสุดท้ายของ nums ให้ทำ
      • ans :=ans + (บนสุด - องค์ประกอบสุดท้ายจาก nums)
      • ลบองค์ประกอบสุดท้ายออกจาก nums
  • คืนสินค้า

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def solve(nums):
   ans = 0
   while nums:
      top = nums.pop()
      while nums and top > nums[-1]:
         ans += top - nums.pop()

   return ans

nums = [3, 4, 7, 3, 5]
print(solve(nums))

อินพุต

[3, 4, 7, 3, 5]

ผลลัพธ์

9