[LeetCode] 121. Best Time to Buy and Sell Stock

Joohyun·2021년 3월 12일

Algorithm

목록 보기
11/16

문제 링크

https://leetcode.com/problems/best-time-to-buy-and-sell-stock/

제출 코드

/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    let max = 0
    let result = 0
    let arr = []
    while (prices.length > 1) {
        max = Math.max.apply(null, prices)
        if (max === 0) { break }
        arr = prices.slice(0, prices.findIndex((e) => e === max) + 1)
        prices.splice(0, prices.findIndex((e) => e === max) + 1)

        let arrMax = Math.max.apply(null, arr)
        let arrMin = Math.min.apply(null, arr)

        if (arrMax - arrMin > result) {
          result = arrMax - arrMin
        }
    }
    return result
};

풀이 방법

배열의 가장 큰 숫자를 기준으로 좌측의 max, min 차이 값을 구한다.
우측은 다시 가장 큰 숫자를 기준으로 max, min 차이 값을 구하는 과정을 반복하여 최대값을 구한다.

profile
#Frontend Developer #Vue #Javascript #Typescript

0개의 댓글