LeetCode/Best Time to Buy and Sell Stock II @ 카시와노하 코워킹 스페이스 KOIL
오늘은 카시와노하의 코워킹 스페이스에 와 보았습니다.
[ htps //w w. 31ゔぇ 얽힌 s. jp/ゔぇんつれおふふせ/こい l/ ]
일본 최대급인 것 같기 때문에, 여기까지의 퀄리티가 다른 것도 있는 것은 아니라고 생각합니다만,
1일(9시-23시까지)로 1500엔
그래서 압도적인 코스파에 경악하고 있습니다.
카시와의 잎이라고 하는 것으로 나의 자택으로부터 door2door로 1시간 약 걸립니다만, 이동 지치지 않고, 여기까지 오면 하고 싶다고 하는 기분이 되는, 딱 좋은 상태의 입지입니다.
글쎄, 오늘의 문제.
[ h tps : // / ㅇ t 여기. 코 m / p 로 b ぇ ms / 베 st - 치메 - 브 y - 앙 d - 셋 ls와 ck 좋다 / ]
Say you have an array for which the ith element is the price of a given stock on day i.
Design an algorithm to find the maximum profit. You may complete as many transactions as you like (i.e., buy one and sell one share of the stock multiple times).
Note: You may not engage in multiple transactions at the same time (i.e., you must sell the stock before you buy again).
Example 1:
Example 2:
Example 3:
마지막 기사 의 주제입니다.
이번에는 1번 자르는 매매가 아니라, 몇번이나 매매를 반복했을 때, 최대의 이익은 얼마가 되는지 산출하는 문제입니다.
다만 같은 날에 판매할 수 없다고 합니다.
해답·해설
해법 1
이번 문제는 다음날 값이 올라가거나 같으면 팔지 않고 기다리고 내려가면 팔리는 최적의 행동을 알아차리면 간단합니다.
그리고 또 간결한 코드와 이마이치한 코드를 나란히 둡니다.
우선 내 submit 코드.
class Solution:
def maxProfit(self, prices: List[int]) -> int:
max_profit, sell, buy = 0, float('-inf'), float('inf')
i = 0
while i < len(prices):
buy = min(buy, prices[i])
if prices[i] > buy:
sell = prices[i]
while i < len(prices)-1 and sell <= prices[i+1]:
sell = prices[i+1]
i += 1
max_profit += sell - buy
sell, buy = float('-inf'), float('inf')
i += 1
return max_profit
다음날에 값이 올라가거나 같으면 팔지 않고 기다리고, 내려가면 팔겠다는 행동을 그대로 코드에 떨어뜨리고 있습니다.
해법 2
이어서 Solution을 Python으로 번역한 코드입니다. 사고 방식은 위와 같습니다만,
'값이 떨어질 때까지 팔지 않고 기다릴' 때 얻은 이익은 1일당 값 차이의 합과 같습니다.
라는 관계를 사용하여 보다 간결한 코드에 떨어뜨리고 있습니다.
아래 그림의 이미지입니다.
class Solution:
def maxProfit(self, prices: List[int]) -> int:
if len(prices) < 2:
return 0
else:
profit = 0
for i in range(len(prices)-1):
if prices[i] < prices[i+1]:
profit += prices[i+1] - prices[i]
return profit
Reference
이 문제에 관하여(LeetCode/Best Time to Buy and Sell Stock II @ 카시와노하 코워킹 스페이스 KOIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mhiro216/items/7aa1bbe41d09d78a9891텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)