LeetCode - 주식 매매 적기 II

2219 단어 LeetCode
제목 링크
배열 을 지정 합 니 다. i 개의 요 소 는 주어진 주식 의 i 일 째 가격 이다.
당신 이 얻 을 수 있 는 최대 이윤 을 계산 하기 위해 알고리즘 을 설계 하 세 요.너 는 가능 한 한 더 많은 거래 를 완성 할 수 있다.
주의: 당신 은 여러 가지 거래 에 동시에 참여 할 수 없습니다.
예시 1:
  : [7,1,5,3,6,4]
  : 7
  :    2  (     = 1)     ,   3  (     = 5)     ,            = 5-1 = 4 。
       ,   4  (     = 3)     ,   5  (     = 6)     ,            = 6-3 = 3 。

예시 2:
  : [1,2,3,4,5]
  : 4
  :    1  (     = 1)     ,   5   (     = 5)     ,            = 5-1 = 4 。
             1     2        ,        。
                    ,                 。

예시 3:
  : [7,6,4,3,1]
  : 0
  :       ,       ,         0。

이 문제 의 주 제 를 분석 해 보 자. 주식 이 저렴 한 가격 에 매입 하고 높 은 가격 에 내 놓 는 것 임 을 감안 하여 최대 이윤 을 요구 하 는 것 은 대체적으로 우리 로 하여 금 최대 의 상승 과 하락 을 추구 하 게 하 는 것 이다.[5, 4, 3, 2, 1] 이렇게 떨 어 지면 이윤 이 0 이 고 [1, 2, 3, 4, 5] 라면 최대 이윤 은 4 다.
[1, 3, 2, 4, 5] 이렇게 올 라 가 고 내 려 가 는 거 라면?우 리 는 1 - > 3, 2 - > 5 곳 에서 총 이윤 을 5 로 얻 을 수 있다 는 것 을 알 았 다.응?2 - > 5 는 2 - > 4 - > 5 로 나 눌 수 있 고 이윤 은 같다.다시 [1, 2, 3, 4, 5] 를 보면 우 리 는 이것 이 사실은 이웃 을 구 하 는 순서 가 맞 는 문제 라 는 것 을 알 게 되 었 다.(순서 쌍 은 a 가 앞 에 있 고 b 가 뒤에 있 으 며 a < b) 를 가리킨다.그래서 우 리 는 인접 한 두 가지 차 이 를 통계 하고 0 보다 크 면 이 차 이 를 이윤 에 넣 어야 한다.
int maxProfit(int* prices, int pricesSize) {
    if(pricesSize<=1) return 0;
    int tot=0;
    for(int i=0;i+1if(prices[i+1]>prices[i])
            tot+=prices[i+1]-prices[i];
    return tot;
}

좋은 웹페이지 즐겨찾기