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

买卖股票的最佳时机(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;
};

 


http://www.kler.cn/a/600254.html

相关文章:

  • 【Excel使用技巧】某列保留固定字段或内容
  • 多语言语料库万卷·丝路2.0开源,数据模态全面升级,搭建文化交流互鉴AI桥梁
  • 原子化 CSS
  • 护网面试题总结
  • Java 集合 List、Set、Map 区别与应用
  • 基于Spring Boot + Vue的银行管理系统设计与实现
  • XDP/eBPF来包过滤-已上机验证
  • CSS实现当鼠标悬停在一个元素上时,另一个元素的样式发生变化的效果
  • 《AI Agent智能应用从0到1定制开发》学习笔记:使用RAG技术增强大模型能力,实现与各种文档的对话
  • CSS语言的双向链表
  • 网络运维学习笔记(DeepSeek优化版) 020 HCIA-Datacom新增知识点02 SDN与NFV概述
  • 6(六)Jmeter线程数分段加压
  • 基于Linux的多进程并发服务器设计与实现
  • RISC-V AIA学习2---IMSIC
  • docker pull时报错:https://registry-1.docker.io/v2/
  • tortoiseSVN、source insignt、J-flash使用
  • 【Hbase】列族版本问题
  • 星型拓扑网络原理、图传模块架构与路由NAT需求探讨
  • 游戏摇杆开发:利用 Windows API 实现摇杆输入捕获
  • Android第五次面试总结(HR面)