배열 A가 있다고 가정합니다. 여기서 A[i]는 i일에 주어진 주식의 가격을 나타냅니다. 우리는 최대의 이익을 찾아야 합니다. 원하는 만큼 거래를 완료할 수 있습니다. (거래는 주식을 사고 파는 것을 의미합니다). 그러나 우리는 동시에 여러 거래에 참여할 수 없다는 점을 명심해야 합니다. 그래서 우리는 새 주식을 사기 전에 주식을 팔아야 합니다.
배열이 A =[7, 1, 5, 3, 6, 4]와 같다고 가정하면 결과는 7이 됩니다. 보시다시피, 2일차(인덱스 1)에 구매하면 다음과 같이 1이 걸립니다. 구매 가격. 그런 다음 3일에 매도하면 이익은 5 – 1 =4가 됩니다. 그런 다음 4일에 사고 5일에 매도하므로 이익은 6 – 3 =3이 됩니다.
이 문제를 해결하려면 다음 단계를 따르십시오 -
- 대답 =0
- 0 ~ n – 1 범위의 i에 대해 (n은 A의 요소 수) −
- A[i] – A[i – 1]> 0이면
- 답변 :=대답 + A[i] – A[i – 1]
- A[i] – A[i – 1]> 0이면
- 반환 응답
예
더 나은 이해를 위해 구현을 살펴보겠습니다.
class Solution(object): def maxProfit(self, prices): """ :type prices: List[int] :rtype: int """ 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]))
입력
print(ob1.maxProfit([7,2,5,8,6,3,1,4,5,4,7]))
출력
13