Skip to content

Commit f9204a9

Browse files
committed
Solution: Best Time to Buy and Sell Stock
1 parent 92359ca commit f9204a9

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
'''
2+
풀이
3+
- 주어진 배열 prices를 한 번 탐색합니다.
4+
5+
- prices[i]가 이전에 저장한 buy_price보다 낮을 경우,
6+
maximum profit이 증가할 가능성이 있습니다.
7+
따라서 buy_price와 sell_price를 prices[i]로 바꿔줍니다.
8+
9+
- prices[i]가 이전에 저장한 sell_price보다 높은 경우,
10+
현재 buy_price로 지금까지 기록한 profit보다 더 높은 이익을 내게 됩니다.
11+
따라서 sell_price를 prices[i]로 바꿔주고 결과값을 갱신합니다.
12+
13+
Big O
14+
- N: 배열 prices의 크기
15+
16+
- Time complexity: O(N)
17+
- 배열의 크기 N이 증가함에 따라 실행 시간도 선형적으로 증가합니다.
18+
19+
- Space complexity: O(1)
20+
- 배열의 크기 N이 증가하여도 사용하는 메모리 공간은 일정합니다.
21+
'''
22+
23+
class Solution:
24+
def maxProfit(self, prices: List[int]) -> int:
25+
res = 0
26+
27+
buy_price = prices[0]
28+
sell_price = prices[0]
29+
30+
for i in range(1, len(prices)):
31+
curr_price = prices[i]
32+
33+
if buy_price > curr_price:
34+
buy_price = curr_price
35+
sell_price = curr_price
36+
elif sell_price < curr_price:
37+
sell_price = curr_price
38+
res = max(res, sell_price - buy_price)
39+
40+
return res

0 commit comments

Comments
 (0)