Cho mảng giá cổ phiếu A[i] ngày i. Tìm lợi nhuận tối đa, có thể giao dịch nhiều lần (mua rồi bán mới được mua tiếp). Ví dụ: [7,1,5,3,6,4] → 7 (mua ngày 2 bán ngày 3: 4, mua ngày 4 bán ngày 5: 3).
Giải pháp
Tổng tất cả các chênh lệch dương giữa ngày liên tiếp:
- ans = 0.
- Duyệt i từ 1 đến n-1: nếu prices[i] - prices[i-1] > 0 → ans += chênh lệch.
Ví dụ
Triển khai Python:
class Solution(object):
def maxProfit(self, prices):
ans = 0
for i in range(1,len(prices)):
if prices[i] - prices[i-1] >0:
ans+=(prices[i] - prices[i-1])
return ans
ob1 = Solution()
print(ob1.maxProfit([7,2,5,8,6,3,1,4,5,4,7])) Đầu vào
print(ob1.maxProfit([7,2,5,8,6,3,1,4,5,4,7]))
Đầu ra
13