04 best-time-to-buy-and-sell-stock

70 阅读1分钟

leetcode.com/problems/be… Brute Force 暴力解法 双循环对比两个差值的最大值

单循环

  1. 假设已经找到了最小值(Number.MAX_VALUE)和最大盈利值
  2. 如果循环的过程中出现了比最小值小的值,直接替换最小值 minPrice = prices[i]
  3. 如果没有出现最小值,用当前值减去最小值如果比最大盈利值大就提换, maxProfit = prices[i] - minPrice
/**
 * @param {number[]} prices
 * @return {number}
 */
const maxProfit = function (prices) {
    let maxProfit = 0
    let minPrice = Number.MAX_VALUE
    for (let i = 0; i < prices.length; i++) {
        if (prices[i] < minPrice) {
            minPrice = prices[i]
        } else if(prices[i] - minPrice > maxProfit) {
            maxProfit = prices[i] - minPrice
        }
    }
    return maxProfit
};