每日小题--买股票的最佳时机

目录

题目 

 分析

解题思路

完整代码


题目 

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

示例 1:

输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

示例 2:

输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。

提示:

  • 1 <= prices.length <= 105
  • 0 <= prices[i] <= 104

 分析

我们想要找到一个最低的买入点,并且需要保证在这个最低买入点后出价最高的一天卖出,简而言之,就是找到一个比起始小,并且结尾在一个有最大差距的位置;

毋庸置疑,一定需要数组遍历结束后才能确定这么一个买入点和卖出点,所以此时想要提升算法的话就要找到一个只需要遍历一遍就能出结果的方法,即将时间复杂度控制在O(n);

摒弃【原始方法:循环遍历所有可能的情况再去判断是否能盈利为正,并且在这个盈利为正的区间内挑出来最大的利润---时间复杂度O(n^2)】的原始方法。

解题思路

遍历数组的过程中去找数组中是否存在一个低价点,并且在低价点的基础上去判断有无上升空间;即杜绝了{4,3,2,1}的情况出现,买入后无法卖出。

这里先设置一个无限大的minprice;而且默认初始利润maxprofit=0;

int maxProfit=0; //将初始设为0

int minPrice=Integer.MAX_VALUE;//初始化无限大

接下来遍历,只要找到更小的price可买入后就更新minprice 

【如下指针找到了一个价格的上升趋势,此时就要在既定的minprice基础上更新maxprofit,直至找到一个最大的卖出点】 

【如同上述三张图所见,只要prices[i]<minPrice是符合的,就不会走进比较利润的else if中,这样也杜绝了出现{4,3,2,1},这种的情况,即maxProfit就不会被赋值了,产出0】

【只有后一个数据比minPrice大的时候,才能进入else if条件,进行maxProfit比较】

完整代码

class Solution {public int maxProfit(int[] prices) {int maxProfit=0; //将初始设为0int minPrice=Integer.MAX_VALUE;//初始化无限大for(int 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;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

企业一站式管理系统odoo的研究——PLM插件的搭建

大纲 1. 环境准备1.1 安装操作系统1.2 更新操作系统1.3 配置用户组和用户1.3.1 创建用户组 odoo1.3.2. 创建用户 odoo1.3.3. 设置用户 odoo 的密码1.3.4. 验证用户和组1.3.5. 将用户 odoo 添加到添加sudo组&#xff1a;1.3.6. 切到odoo用户 2. 安装 Odoo1. 安装依赖项目2.2. 安…

泰矽微重磅发布超高集成度车规触控芯片TCAE10

市场背景 智能按键和智能表面作为汽车智能化的重要部分&#xff0c;目前正处于快速发展阶段&#xff0c;电容式触摸按键凭借其操作便利性与小体积的优势&#xff0c;在汽车内饰表面的应用越来越广泛。对于空调控制面板、档位控制器、座椅扶手、门饰板、车顶控制器等多路开关的…

10月回顾 | Apache SeaTunnel社区动态与进展一览

各位热爱 Apache SeaTunnel 的小伙伴们&#xff0c;社区10月份月报来啦&#xff0c;请查收&#xff01; 这里将记录Apache SeaTunne社区每月动态和进展&#xff0c;欢迎关注。 月度Merge之星 感谢以下小伙伴上个月为 Apache SeaTunnel 所做的精彩贡献&#xff08;排名不分先…

__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined

VUE_PROD_HYDRATION_MISMATCH_DETAILS 未明确定义。您正在运行 Vue 的 esm-bundler 构建&#xff0c;它期望这些编译时功能标志通过捆绑器配置全局注入&#xff0c;以便在生产捆绑包中获得更好的tree-shaking优化。 Vue.js应用程序正在使用ESM&#xff08;ECMAScript模块&#…

浪潮信息“源”Embedding模型登顶MTEB榜单第一名

在自然语言处理&#xff08;NLP&#xff09;和机器学习领域&#xff0c;Embedding模型是将文本数据转换为高维向量表示的核心技术&#xff0c;直接影响NLP任务&#xff08;如文本分类、情感分析等&#xff09;的效果&#xff0c;对于提升模型性能和深入理解文本语义具有至关重要…

一文6个步骤带你实现接口测试入门

软件测试资料领取&#xff1a;[内部资源] 想拿年薪40W的软件测试人员&#xff0c;这份资料必须领取~ 软件测试面试刷题工具&#xff1a;软件测试面试刷题【800道面试题答案免费刷】 一、接口测试概述 1 什么是接口测试&#xff1a; 接口测试是测试系统组件间交互的一种测试…

成人失禁护理领导品牌可靠亮相广州SIC老博会 助力推动养老产业高质量发展

2024年11月15日至17日&#xff0c;第十届中国国际老龄产业博览会&#xff08;SIC老博会&#xff09;在广州保利世贸博览馆开幕。可靠股份&#xff08;股票代码&#xff1a;301009&#xff09;携成人失禁护理系列等经典及战略产品受邀亮相本次展会&#xff0c;全方位展示企业在产…

【macOS】Mac安装consola字体至系统和PyCharm的最简单教程

博主本人是Mac小白&#xff0c;刚使用Air没多久&#xff0c;今天coding的时候发现PyCharm的字体怎么看怎么不舒服&#xff0c;一对比才发现跟win里的有较大差别&#xff0c;查看Mac的PyCharm字体原来是默认的JetBrains Mono&#xff1a; 但由于PyCharm可以同步账号的所有设置再…

mysql delete后通过日志恢复数据

1.打开navicat查看删除时间 2.查看日志功能是否打开 show variables like %log_bin%;3. 查看日志文件所在目录 show variables like %datadir%;4.用这个路径去找日志文件&#xff0c;名字里带bin&#xff0c;最后修改时间和你第一步找到删除时间一样(如果之后有过其它增删改…

react-redux useSelector钩子 学习样例 + 详细解析

&#xff08;一&#xff09;react-redux useSelector 学习样例 详细解析 创建一个新项目&#xff0c;将依赖正确安装&#xff1a; npx create-react-app my-redux-app cd my-redux-app# 安装 Redux 和 React-Redux npm install redux react-redux# 安装 ajv npm install ajv#…

小地图制作(一)

(1)素材准备 (2)小地图的显示

中国书法、孙溟㠭浅析“象形印”

孙溟㠭浅析“象形印” “象形印”又称之为“图案印”、“肖像印”。刻有图案印章的统称。 图画印自战国、汉、魏都有&#xff0c;象形印一般铸有人物、动物等图案&#xff0c;如&#xff1a;龙、虎、雀、凤、龟等都是吉祥的图案&#xff0c;有白文&#xff0c;也有朱文。取材…

腾讯云双11最强攻略:如何选购优惠产品,薅最划算的羊毛

目录 一、首选优惠产品 二、可参与拼团的产品&#xff1a;超值组合优惠 三、不推荐购买的产品 四、注意事项与优惠最大化技巧 总结 腾讯云的双11活动力度空前&#xff0c;适合个人开发者、中小企业甚至是大型公司。这份攻略将帮你了解该购买哪些产品&#xff0c;不该购买哪…

外网访问 WebDav 服务

从外部网络环境&#xff08;比如异地和家中网络&#xff09;来访问公司内网的 WebDav 服务&#xff08;基于 IIS &#xff09;并映射成本地虚拟磁盘。 步骤如下 第一步 在公司内网的电脑上设置 webDav。 1&#xff0c;找到【控制面板】&#xff0c;双击进入。 2&#xff0c…

基于卷积神经网络的草莓叶片病虫害识别与防治系统,vgg16,resnet,swintransformer,模型融合(pytorch框架,python代码)

更多图像分类、图像识别、目标检测等项目可从主页查看 功能演示&#xff1a; 草莓叶片病虫害识别与防治系统&#xff0c;vgg16&#xff0c;resnet&#xff0c;swintransformer&#xff0c;模型融合&#xff0c;卷积神经网络&#xff08;pytorch框架&#xff0c;python代码&…

双十一抢券风波:大学生300元提6000元电动车遭拒,谁该负责?

双十一购物狂欢节&#xff0c;本应是消费者享受优惠、商家提升销量的双赢时刻&#xff0c;但在河南郑州&#xff0c;发生了一起哭笑不得的抢券风波。一名大学生在双十一期间&#xff0c;通过某平台抢到了原价6099元电动车的直降优惠&#xff0c;只需支付300元就能将车骑回家。然…

(a,b,0)类的计数分布

内容来源 保险风险与破产&#xff08;原书第二版&#xff09;科学出版社 定义 如果一个计数分布的分布律满足 p n ( a b n ) p n − 1 , n 1 , 2 , ⋯ p_n\left(a\frac{b}{n}\right)p_{n-1},n1,2,\cdots pn​(anb​)pn−1​,n1,2,⋯ 其中 a , b a,b a,b 均为常数&#x…

菜叶子芯酸笔记4:大模型训练、分布式训练、显存估算

大模型训练任务主要分为以下三种模型训练过程。 预训练pretrain 监督微调 supervised finetune training 奖励模型 reward model RLHF 它们之间的顺序联系用RLHF (reinforcement learning with human feedback) 过程来阐释。 首先预训练pretrain得到一个base模型。 到微调…

Python爬虫----python爬虫基础

一、python爬虫基础-爬虫简介 1、现实生活中实际爬虫有哪些&#xff1f; 2、什么是网络爬虫&#xff1f; 3、什么是通用爬虫和聚焦爬虫&#xff1f; 4、为什么要用python写爬虫程序 5、环境和工具 二、python爬虫基础-http协议和chrome抓包工具 1、什么是http和https协议…