Cho danh sách prices biểu diễn giá cổ phiếu theo thứ tự thời gian. Tìm lợi nhuận tối đa có thể đạt được từ việc mua và bán cổ phiếu bất kỳ số lần nào. Phải mua trước khi bán.
Ví dụ, prices = [10, 50, 30, 40, 60], đầu ra là 70, vì mua ở 10 bán ở 50, mua ở 30 bán ở 60.
Các bước giải quyết:
prev_price := infinity.profit := 0.- Duyệt từng giá
ptrongprices:- Nếu
p > prev_price,profit += p - prev_price. prev_price = p.
- Nếu
- Trả về
profit.
Ví dụ minh họa
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]))
Đầu vào
[10, 50, 30, 40, 60]
Đầu ra
70