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

Leetcode 122 买卖股票的最佳时机 II

题意理解

        已知:一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格

        如何哪个时间点买入,哪个时间点卖出,多次交易,能够收益最大化

        目的:收益最大化

解题思路

        使用贪心思路来解题,需要明确什么时局部最优解,如何由局部最优解推导全局最优解。

        首先我们要尽可能的利益最大化,就要尽可能的保证利益为正。

        这里引入利益区间的概念及:[买入,卖出]  利益=卖出-买入

        例如: [7,1,5,3,6,4]

        eg:利益区间[0,3]   

             利益=p[3]-p[0]

                    =p[3]-p[2]+p[2]-p[1]+p[1]-p[0]

              实际是每天利益的和,由此可知,我们要保证利益尽可能的大

              即收集所有正的天利益即可得到,这个规定时间内的最大获益。

1.贪心解题

        我们使用result来记录最大利益,同时我们需要两个指针一个指向买入天,一个指向卖出天,来计算当前交易利益

        注意:若交易会损失钱则可选择不交易,所以result的初始化为0。

public int maxProfit(int[] prices) {int result=0;//第一天不卖出,最后一天不买入for(int i=1;i<prices.length;i++){result+=Math.max(prices[i]-prices[i-1],0);//总是叠加正的利益}return result;}

2.分析

时间复杂度:O(n)

空间复杂度:O(n)

n是prices数组的长度。

http://www.lryc.cn/news/264277.html

相关文章:

  • 音频文件合成
  • 20231220将NanoPC-T4(RK3399)开发板的Android10的SDK按照Rockchip官方挖掘机开发板编译打包刷机之后启动跑飞
  • vivo 容器平台资源运营实践
  • ASP.NET Core面试题之Redis高频问题
  • 【教程】Ubuntu基本软件安装
  • Jenkins 构建环境指南
  • 基于Go语言的HTTP路由设计与实现
  • SpringMVC01
  • 基于Redis限流(aop切面+redis实现“令牌桶算法”)
  • 【小白专用】php pdo方式连接sqlserver 设置方法 更新23.12.21
  • 打开C#项目时出现“error : 找不到指定的 SDK”的错误解决方法汇总
  • MIT 6.824 练习1
  • Git报错x509: certificate signed by unknown authority
  • OpenCV技术应用(8)— 如何将视频分解
  • Swagger2接口测试文档
  • 【Java】BigDecimal 比较自动化页面获取数据的大小
  • 开源键盘工程QMK
  • Elasticsearch的批量bulk 提交 写入的方式会有顺序问题吗?
  • 云原生之深入解析如何使用Vcluster Kubernetes加速开发效率
  • PCL 已知同名点对计算旋转矩阵并对点云进行旋转
  • MyBatis ORM映射
  • 在线客服系统推荐:为何选择Zoho Desk?
  • 手绘心情树叶,探索情绪世界
  • 智能优化算法应用:基于水基湍流算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 打开和关闭GBASE南大通用数据库连接
  • Zookeeper 集群搭建过程中常见错误
  • Linux开发工具——vim篇
  • 基于YOLOv5的吸烟检测系统设计与实现
  • 递归算法:二叉树前序、中序、后序遍历解析与递归思想深度剖析
  • WebGL开发数字孪生项目