320x100
문제 : https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/
주식 가격 배열이 주어진다.
어떤 주식을 샀을 때 해당 주식을 팔기 전까지는 주식을 구입할 수 없다고 하자.
주식을 사고 판다고 했을 때 얻을 수 있는 최대 이익은 얼마인가?
투 포인터로 해결했다.
처음에는 DP로 했었는데 이건 그렇게하면 TLE 난다.
다시 생각해보니 주식을 사고 나서 최대가를 찍었을 때 파는 거다.
주식가격이 상승 곡선이 시작하기 전 가장 최소값을 찍었을 때, 주식을 구입한다.
상승 곡선이 끝날 때, 주식의 가격이 최대가 됐을 때 주식을 판다.
주식을 판 다음 날부터 다시 위 과정을 반복한다.
이를 배열 끝날때까지 반복한다.
상승 곡선이 끝나기 전에 배열이 종료가 된다면(배열 종료시점까지 상승 곡선이 유지된다면) 가장 마지막 날 주식을 파는 것도 잊지말자.
시간복잡도는 O(N).
320x100
'알고리즘 문제 > Leetcode' 카테고리의 다른 글
[leetcode][678] Valid Parenthesis String (0) | 2020.04.16 |
---|---|
[leetcode][525] Contiguous Array (0) | 2020.04.13 |
[leetcode][207] Course Schedule (0) | 2020.04.03 |
[leetcode][200] Number of Islands (0) | 2020.03.30 |
[leetcode][152] Maximum Product Subarray (0) | 2020.03.24 |
댓글