สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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