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

Leetcode 121 买卖股票的最佳时机

题意理解

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

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

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

        

        注意:这里只有一只股票,只进行一次买卖,求最大利益。

        所以:对于每一天,都有两个状态:持有股票、不持有股票

        这里定义一个二维dp数组:dp[0]表示持有股票能获得的最大收益,dp[0]表示不持有股票能获得最大大受益。

        对于不持有股票的状态:包含当天卖出

        持有股票状态:包含当前买入

解题思路

        定义二维dp[]数组:

        dp[i][0]:表示持有股票能获得的最大收益

        dp[i][1]:表示不持有股票能获得最大大受益

        1.初始化

        dp[0][0]=-price[0];//买入所以当前收益为负

        dp[0][1]=0;//无交易,无收益

        2.递推公式

        dp[i][0]=max(之前买入,当前买入)=max(dp[i-1][0],-prices[i])

        dp[i][1]=max(之前卖出,今天卖出)=max(dp[i-1][1],dp[i-1][0]+prices[i])

1.解题

public int maxProfit(int[] prices) {int[][] dp=new int[prices.length][2];dp[0][0]=-prices[0];dp[0][1]=0;for(int i=1;i<prices.length;i++){dp[i][0]=Math.max(dp[i-1][0],-1*prices[i]);dp[i][1]=Math.max(dp[i-1][1],dp[i-1][0]+prices[i]);}return Math.max(dp[prices.length-1][0],dp[prices.length-1][1]);}

2.分析

时间复杂度:O(n)

空间复杂度:O(2n)

相关文章:

  • 2-8 单链表+双链表+模拟栈+模拟队列
  • Vue-57、Vue技术路由的参数如何传递
  • vue3 可视化大屏自适应屏幕组件
  • error: object ‘FastMNNIntegration‘ not found
  • 159基于matlab的基于密度的噪声应用空间聚类(DBSCAN)算法对点进行聚类
  • 【echarts】入门示例
  • 基于微信小程序的新生报到系统的研究与实现,附源码
  • dolphinDB使用select筛选时间字段
  • PKI - 03 密钥管理(如何进行安全的公钥交换)
  • Bert与ChatGPT
  • Python程序员面试题精选及解析(2)
  • STM32F1 引脚重映射功能
  • Nginx访问控制模块详解
  • openkylin(Debian系)安装nginx及安装前需要的准备
  • 【计算机网络】协议层次及其服务模型
  • 2017年终总结、随想
  • 78. Subsets
  • AWS实战 - 利用IAM对S3做访问控制
  • DOM的那些事
  • es6要点
  • ES6之路之模块详解
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • HomeBrew常规使用教程
  • Java 内存分配及垃圾回收机制初探
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • vue:响应原理
  • 多线程事务回滚
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端面试之闭包
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (js)循环条件满足时终止循环
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)ssm码农论坛 毕业设计 231126
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • ***通过什么方式***网吧
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 使用 XPath 来读写 XML 文件
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net连接oracle数据库
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @hook扩展分析
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [22]. 括号生成
  • [Angularjs]ng-select和ng-options
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • [CCIE历程]CCIE # 20604
  • [CISCN 2019华东南]Web11
  • [CSS]文字旁边的竖线以及布局知识