一、买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 ;

贪心算法:
每次发现更低价格立即更新买入点(minPrice)
每次发现更高利润立即更新卖出收益(maxProfit)

/*** 计算股票买卖的最大利润(单次交易)* @param {number[]} prices - 股票每日价格数组* @returns {number} 最大利润(无利润时返回0)*/
function maxProfit(prices) {// 边界条件const len = prices.length || 0;if (len < 2) return 0;// 初始化历史最低价为第一天值let minPrice = prices[0];// 初始化最大利润为0(默认无利润)let maxProfit = 0;// 单次遍历所有价格点(从第二天开始)for (let i = 1; i < len; i++) {const currentPrice = prices[i];// 情况1:发现新的历史最低价if (currentPrice < minPrice) {minPrice = currentPrice; // 更新历史最低价// 情况2:当前价格高于历史最低价,计算潜在利润} else if (currentPrice - minPrice > maxProfit) {// 若当前利润超过历史最大利润则更新maxProfit = currentPrice - minPrice;}/* 注意:无需处理其他情况(如当前利润小于历史最大利润)因为此时只需维持已有的maxProfit值即可 */}// 返回整个遍历过程中发现的最大利润return maxProfit;
}

算法说明:
核心思路:单次遍历数组,动态追踪历史最低价,并计算当前价格与历史最低价的差值(潜在利润)
关键变量
minPrice:记录遍历过程中遇到的最低价格(初始设为最大安全整数)
maxProfit:记录当前最大利润(初始为0)
遍历过程
遇到更低价格时更新 minPrice
遇到更高价格时计算利润,并更新 maxProfit
边界处理:若所有价格递减(无利润),直接返回初始值0。

复杂度分析
时间复杂度 O(n):仅需遍历数组一次
空间复杂度 O(1):仅使用两个常量变量

二、买卖股票的最佳时机Ⅱ

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润 。

贪心算法:
捕捉所有上涨波段

/*** 计算股票买卖的最大利润(单次交易)* @param {number[]} prices - 股票每日价格数组* @returns {number} 最大利润(无利润时返回0)*/
function maxProfit(prices) { const len = prices.length || 0;if (len < 2) return 0;let maxProfit = 0;// 遍历从第二天开始的所有价格for (let i = 1; i < len; i++) {const curPrice = prices[i]; // 第i天价格const prePrice = prices[i-1]; // 第i-1天价格if (curPrice > prePrice) maxProfit += (curPrice - prePrice);};return maxProfit;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912815.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912815.shtml
英文地址,请注明出处:http://en.pswp.cn/news/912815.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#基础(WndProc)

WndProc 是操作系统与你的程序“对话”的通道​​。当用户点击鼠标、按下键盘&#xff0c;或系统事件&#xff08;如窗口移动&#xff09;发生时&#xff0c;Windows 会将这些事件打包成“消息”&#xff0c;发送给你的窗口&#xff0c;而 WndProc 就是接收和处理这些消息的函数…

记录一个 Linux中脚本无法执行的问题

问题描述&#xff1a; 在本地的window系统传的云服务器上一个.sh结尾的安装Java环境的脚本 上传到云服务器后&#xff0c;使用命令赋予执行权限 chmod x 文件名然后看一下这个脚本变绿了就可以了 然后开始尝试执行 ./脚本名 然后就报错了 然后开始排查问题 1.检查并修复 She…

Iceberg在图灵落地应用

导读 百度MEG上一代大数据产品存在平台分散、易用性差等问题&#xff0c;导致开发效率低下、学习成本高&#xff0c;业务需求响应迟缓。为了解决这些问题&#xff0c;百度MEG内部开发了图灵3.0生态系统&#xff0c;包括Turing Data Engine(TDE)计算&存储引擎、Turing Data…

FPGA设计的用户约束

FPGA设计的用户约束 文章目录 FPGA设计的用户约束FPGA设计的用户约束综合约束管脚约束位置约束时序约束小总结 FPGA设计的用户约束 至此&#xff0c;HDL到门级网表的转化已经完成&#xff0c;对于编译器来说&#xff0c;下一步的任务就是要将门级网表转换并映射到具体的FPGA硬…

Spring 生态创新应用:微服务架构设计与前沿技术融合实践

在数字化转型的深水区&#xff0c;企业级应用正面临从 “单体架构” 向 “分布式智能架构” 的根本性跃迁。Spring 生态以其二十年技术沉淀形成的生态壁垒&#xff0c;已成为支撑这场变革的核心基础设施。从 2002 年 Rod Johnson 发布《Expert One-on-One J2EE Design and Deve…

车牌识别与标注:基于百度OCR与OpenCV的实现(一)

车牌识别与标注&#xff1a;基于百度OCR与OpenCV的实现 在计算机视觉领域&#xff0c;车牌识别是一项极具实用价值的技术&#xff0c;广泛应用于交通监控、智能停车场管理等领域。本文将介绍如何在macOS系统下&#xff0c;利用百度OCR API进行车牌识别&#xff0c;并结合OpenC…

【系统分析师】2021年真题:论文及解题思路

文章目录 试题一&#xff1a;论面向对象的信息系统分析方法试题二&#xff1a;论静态测试方法及其应用试题三&#xff1a;论富互联网应用的客户端开发技术试题四&#xff1a;论DevSecOps技术及其应用 试题一&#xff1a;论面向对象的信息系统分析方法 信息系统分析是信息系统生…

OFA-PT:统一多模态预训练模型的Prompt微调

摘要 Prompt微调已成为模型微调的新范式&#xff0c;并在自然语言预训练甚至视觉预训练中取得了成功。参数高效的Prompt微调方法通过优化soft embedding并保持预训练模型冻结&#xff0c;在计算成本低和几乎无性能损失方面展现出优势。在本研究中&#xff0c;我们探索了Prompt…

【硬核数学】2.5 “价值标尺”-损失函数:信息论如何设计深度学习的损失函数《从零构建机器学习、深度学习到LLM的数学认知》

欢迎来到本系列硬核数学之旅的第十篇&#xff0c;也是我们对经典数学领域进行深度学习“升级”的最后一站。我们已经拥有了强大的模型架构&#xff08;基于张量&#xff09;、高效的学习引擎&#xff08;反向传播&#xff09;和智能的优化策略&#xff08;Adam等&#xff09;。…

雷卯针对灵眸科技EASY EAI nano RV1126 开发板防雷防静电方案

一、应用场景 1. 人脸检测 2. 人脸识别 3. 安全帽检测 4. 人员检测 5. OCR文字识别 6. 人头检测 7. 表情神态识别 8. 人体骨骼点识别 9. 火焰检测 10. 人脸姿态估计 11. 人手检测 12. 车辆检测 13. 二维码识别 二、 功能概述 1 CPU 四核ARM Cortex-A71.5GHz 2 …

【记录】Ubuntu|Ubuntu服务器挂载新的硬盘的流程(开机自动挂载)

简而言之&#xff0c;看这张图片就好&#xff08;可以存一下&#xff0c;注意挂载点/data可以自定义&#xff0c;挂载硬盘的位置/dev/sdb要改成步骤1中检查的时候查到的那个位置&#xff0c;不过这个图的自动挂载漏了UUID&#xff0c;可以通过blkid指令查找&#xff09;&#x…

六、软件操作手册

建议在飞书平台阅读此文。 我将沿着初来乍到的用户的浏览路径介绍“诤略参谋”应用。 目录 一、用户信息1.1 注册、登录、自动登录、忘记密码、修改用户名、修改密码、退出登录与个性化设置1.2 认识主界面与任务系统1.3 语义审查、Knowledge Cutoff 审查1.4 重要内容未保存提醒…

电脑键盘不能打字了怎么解决 查看恢复方法

电脑键盘打不了字&#xff0c;这是我们电脑使用过程中&#xff0c;偶尔会遇到的电脑故障问题。一般来说&#xff0c;电脑键盘打不出字&#xff0c;可能是硬件故障、驱动问题或系统设置错误等多种原因引起。本文将详细介绍一些常见的原因和解决方法&#xff0c;帮助用户恢复正常…

基于STM32的土豆种植自动化灌溉系统设计与实现

📌 项目简介 随着农业现代化发展及水资源短缺问题日益突出,传统土豆种植方式在浇灌效率与用水科学性方面暴露出诸多问题。本文基于STM32F103C8T6微控制器,设计并实现了一种智能化的土豆种植自动灌溉系统,集成多种环境传感器(温湿度、土壤湿度、光照)、控制设备(水泵、…

第8篇:Gin错误处理——让你的应用更健壮

作者:GO兔 博客:https://luckxgo.cn 分享大家都看得懂的博客 引言 在Web应用开发中&#xff0c;错误处理是保证系统稳定性和用户体验的关键环节。Gin作为高性能的Go Web框架&#xff0c;提供了灵活的错误处理机制&#xff0c;但许多开发者在实际项目中仍会遇到错误处理混乱、异…

【PyCharm】Python安装路径查找

PyCharm应用笔记 第一章 Python安装路径查找 文章目录 PyCharm应用笔记前言一、电脑设置查找二、资源管理器查找 前言 本文主要介绍几种Python安装路径查找的方法。 一、电脑设置查找 简述过程&#xff1a;设置》应用》安装的应用》搜索框输入Python。 注&#xff1a;电脑使用…

数据结构:递归:汉诺塔问题(Tower of Hanoi)

目录 问题描述 第一性原理分析 代码实现 第一步&#xff1a;明确函数要干什么 第二步&#xff1a;写好递归的“结束条件” 第三步&#xff1a;写递归步骤 &#x1f333; 递归调用树 &#x1f50d;复杂度分析 时间复杂度&#xff1a;T(n) 2^n - 1 空间复杂度分析 问题描…

synetworkflowopenrestydpdk

一.skynet 1. Skynet 的核心架构是什么&#xff1f;简述其进程与服务模型。 Skynet 采用多进程多服务架构。主进程负责管理和监控&#xff0c;多个工作进程&#xff08;worker&#xff09;负责实际服务运行。每个服务&#xff08;service&#xff09;是一个独立的 Lua 虚拟机&…

【甲方安全视角】安全防御体系建设

文章目录 前言一、云安全防护能力第一阶段:搭建安全防护设施第二阶段:安全防护设施的精细化运营第三阶段:安全运营周报输出二、IT安全防护能力(一)办公网安全设施建设(二)办公网安全运营三、基础安全防护能力(一)物理安全(二)运维安全(三)安全应急响应四、总结前言…

计算机组成原理与体系结构-实验一 进位加法器(Proteus 8.15)

目录 一、实验目的 二、实验内容 三、实验器件 四、实验原理 4.1 行波进位加法器 4.2 先行进位加法器 4.3 选择进位加法器&#xff08;尝试猜测原理&#xff09; 五、实验步骤与思考题 一、实验目的 1、了解半加器和全加器的电路结构。 2、掌握串行进位加法器和并行进…