当前位置: 首页 > news >正文

买卖股票的最佳时机(js实现,LeetCode:121)

 看到这道题我的第一想法是使用双指针暴力破解

/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function (prices) {
    let fast = 1
    let slow = 0
    let payoffs = 0
    while (slow < prices.length - 1) {
        payoffs = Math.max(payoffs, prices[fast] - prices[slow])
        fast += 1
        if (fast > prices.length - 1) {
            slow += 1
            fast = slow + 1
        }
    }
    return payoffs
};

但是很可惜,遇到了这么个测试用例

这里想到了贪心算法,只走一次遍历,空间复杂度为O(1)

/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function (prices) {
       if (prices.length === 0) return 0;

    let min = prices[0]; // 最低买点
    let max = 0; // 最大收入
    // 一次遍历找到最高点和最低点
    for (let curr of prices) {
        // 最佳买点,买入点最低
        min = Math.min(min, curr);
        max = Math.max(max, curr - min);
    }
    return max;
};

 

相关文章:

  • 大模型tokenizer重构流程
  • el-date-picker时间范围 编辑回显后不能修改问题
  • RedisTemplate和RedissonClient适用的场景有什么不同
  • 2025年优化算法:龙卷风优化算法(Tornado optimizer with Coriolis force,TOC)
  • 48days强训——day2
  • Axure RP9教程 :轮播图(动态面板) | 头部锁定
  • Python---数据分析(Pandas八:二维数组DataFrame数据操作一: 数据清洗,数据转换)
  • 掌握C#循环:for、while、break与continue详解及游戏案例
  • QT网络通信的接口与使用
  • 城电科技|景观光伏花 太阳能发电的景观光伏太阳花向日葵
  • 高校校园交友微信小程序的设计与实现【lw+源码+部署+讲解】
  • 接口自动化框架篇:自定义异常日志封装!
  • 【T2I】Divide Bind Your Attention for Improved Generative Semantic Nursing
  • 基于QT(C++)实现绘图程序
  • 枪机AI人工智能的识别镜头图像技术
  • 深入理解指针(1)(C语言版)
  • Android Compose 框架副作用管理(SideEffect、EffectScope)深入剖析(十八)
  • 基于Vue.js的组件化开发技术与实践探索
  • 基于Spring Boot的乡村养老服务管理系统的设计与实现(LW+源码+讲解)
  • Spring Security核心源码和功能实现
  • 音著协宣布胜诉,虎牙公司终审被判侵权
  • 西域都护府博物馆今日在新疆轮台县开馆
  • 官方数据显示:我国心血管疾病患者已超3亿人
  • 世界高血压日|专家:高血压患者控制血压同时应注重心率管理
  • 陈刚:推动良好政治生态和美好自然生态共生共优相得益彰
  • 一旅客因上错车阻挡车门关闭 ,株洲西高铁站发布通报