77、贪心-买卖股票的最佳时机

思路

具体会导致全局最优,这里就可以使用贪心算法。方式如下:

遍历每一位元素找出当前元素最佳卖出是收益是多少。然后依次获取最大值,就是全局最大值。

这里可以做一个辅助数组:右侧最大数组,求右侧最大数组就要从右往左求。

比如[7,1,5,3,6,4],从4开始,没有右侧,取-1,

到6,右侧最大是4,到3,右侧最大是6,依次类推。代码如下:

class Solution {// 主方法用于计算最大利润public static int maxProfit(int[] prices) {// 如果输入数组为 null 或长度为 0,直接返回利润为 0if (prices == null || prices.length == 0) {return 0;}// 调用 getRightMax 方法来获取每个元素右侧的最大值的数组int[] rightMax = getRightMax(prices);int max = 0; // 用于存储和更新最大利润// 遍历价格数组for (int i = 0; i < prices.length; i++) {// 计算当前价格i和其右侧最大价格之差,更新 max 到最大利润max = Math.max(max, rightMax[i] - prices[i]);}// 返回计算得到的最大利润return max;}// 辅助方法,用于生成每个位置右侧的最大价格数组private static int[] getRightMax(int[] prices) {int N = prices.length; // 数组长度int[] maxArray = new int[N]; // 存储从右至左的最大值int max = prices[N-1]; // 从最右侧开始,初始化最大值为数组最后一个元素// 从右向左遍历数组for (int i = N - 2; i >= 0; i--) {maxArray[i] = max; // 存储当前的最大值// 如果当前元素大于已知的最大值,更新 maxif (prices[i] > max) {max = prices[i];}}// 因为最右侧元素右边没有元素,所以这里设置为 -1 表示无效值maxArray[N-1] = -1;// 返回构建的最大值数组return maxArray;}
}

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

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

相关文章

Linux专栏03:使用Xshell远程连接云服务器

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Linux专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 使用Xshell远程连接云服务器 编号&#xff1a;03 文章目录 使用Xsh…

rust疑难杂症

rust疑难杂症解决 边碰到边记录&#xff0c;后续可能会逐步增加&#xff0c;备查 cargo build时碰到 Blocking waiting for file lock on package cache 原因是Cargo 无法获取对包缓存的文件锁&#xff0c; 有时vscode中项目比较多&#xff0c;如果其中某些库应用有问题&…

border-image-slice详细说明

上一篇文章我们介绍了 border-image的用法&#xff0c;其中border-image-source、border-image-width、 border-image-outset都比较简单好理解&#xff0c;这边文章我们重点学一下border-image-slice 属性&#xff0c;它用于定义边框图像如何被切割并应用到元素的边框上。这个属…

排序-八大排序FollowUp

FollowUp 1.插入排序 (1).直接插入排序 时间复杂度:最坏情况下:0(n^2) 最好情况下:0(n)当数据越有序 排序越快 适用于: 待排序序列 已经基本上趋于有序了! 空间复杂度:0(1) 稳定性:稳定的 public static void insertSort(int[] array){for (int i 1; i < array.length; i…

二维码门楼牌管理应用平台建设:实现用户权限的高效管理

文章目录 前言一、用户权限管理的重要性二、用户管理中心的构建三、用户权限管理的实施策略四、用户权限管理的挑战与应对五、结语 前言 随着信息技术的飞速发展&#xff0c;二维码门楼牌管理应用平台已成为城市管理的重要组成部分。本文将深入探讨如何通过用户权限管理&#…

Windows 容器镜像踩坑记录

为什么研究windows容器&#xff1f;emm&#xff0c;公司需要&#xff0c;不想多说。 dotnet后端 问题描述&#xff1a; 基于mcr.microsoft.com/dotnet/aspnet:6.0镜像撰写dockerfile编译.net core后端项目后运行容器出现类库不存在问题&#xff1a; 程序中使用了fastreport&a…

前端 CSS

目录 选择器 复合选择器 伪类-超链接 结构伪装选择器 伪元素选择器 画盒子 字体属性 CSS三大属性 Emmet写法 背景属性 显示模式 盒子模型 盒子模型-组成 盒子模型-向外溢出 盒子模型-圆角 盒子模型-阴影 flex position定位 CSS小精灵 字体图标 垂直对齐方式…

2024HW --->操作系统权限维持

前面不是说要讲隧道吗&#xff0c; 没错&#xff0c;我又鸽了&#x1f54a;&#x1f54a;&#x1f54a;&#x1f54a;&#xff0c;那么今天现在讲一下操作系统的权限维持&#xff01; 在我们提权之后&#xff0c;或者说打穿了整个内网之后&#xff0c;我们需要做权限维持&#…

复旦 北大 | 从头训练中文大模型:CT-LLM

引言 当前&#xff0c;绝大多数大模型&#xff08;LLMs&#xff09;基本上都是以英文语料库训练得到的&#xff0c;然后经过SFT来匹配不同的语种。然而&#xff0c;今天给大家分享的这篇文章旨在从头开始训练中文大模型&#xff0c;在训练过程中「主要纳入中文文本数据」&…

javaScript 判断闰年

接受用户输入年份 如果是闰年就弹出闰年&#xff0c;遇到平年就是弹出平年 var a prompt(请输入年份);if(a%40&&a%100!0||a%4000){alert(闰年);}else{alert(平年);}

【C++】学习笔记——类和对象_5

文章目录 二、类和对象14. 日期类的实现15. const成员16. 取地址重载17. 再谈构造函数初始化列表 18. explicit关键字19. static成员 未完待续 二、类和对象 14. 日期类的实现 上一篇我们已经大致将日期类的重要功能都给实现了&#xff0c;这节将会对日期类进行完善&#xff…

9.【Linux】(死锁问题||线程同步||条件变量||生产者消费者模型)

常见锁的概念 死锁 死锁是指在一组进程中各个进程均占有不会释放的资源&#xff0c;但因互相申请被其他进程所占用的不会释放的资源而处于一种永久等待的状态。简单来说就是两个线程都 在等待对方释放锁。 死锁必要条件 必须同时满足四个条件才会产生死锁 1.互斥条件&…