สมมติว่าเรามีรายการราคาที่แสดงราคาหุ้นของบริษัทตามลำดับเวลา เราต้องหากำไรสูงสุดที่เราสามารถทำได้จากการซื้อและขายหุ้นนั้นหลายครั้ง เราต้องจำไว้ว่าเราต้องซื้อก่อนจึงจะขายได้
ดังนั้น หากอินพุตเป็นเหมือนราคา =[10, 50, 30, 40, 60] ผลลัพธ์จะเป็น 70 ตามที่เราสามารถซื้อได้ที่ 10 ขายที่ 50 ซื้อที่ 30 และขายที่ 60พี>
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- prev_price :=อินฟินิตี้
- กำไร :=0
- สำหรับแต่ละ p ในราคา ทำ
- ถ้า p>
prev_price แล้ว
- กำไร :=กำไร + p - prev_price
- prev_price :=p
- ถ้า p>
prev_price แล้ว
- คืนกำไร
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution:
def solve(self, prices):
prev_price = float("inf")
profit = 0
for p in prices:
if p > prev_price:
profit += p - prev_price
prev_price = p
return profit
ob = Solution()
print(ob.solve([10, 50, 30, 40, 60])) อินพุต
[10, 50, 30, 40, 60]
ผลลัพธ์
70