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

力扣 买卖股票的最佳时机

贪心算法典型例题。

题目

做过股票交易的都知道,想获取最大利润,就得从最低点买入,最高点卖出。这题刚好可以用暴力,一个数组中找到最大的数跟最小的数,然后注意一下最小的数在最大的数前面即可。从一个数组中选两个数作比较,可以选用两个for循环。这题用dp同理,不过dp数组存状态是多余的。

时间复杂度: O(n^2),空间复杂度: O(1)。

public class Solution {public int maxProfit(int[] prices) {int max = 0;for (int i = 0; i < prices.length - 1; i++) {for (int j = i + 1; j < prices.length; j++) {int profit = prices[j] - prices[i];if (profit > max) {max = profit;}}}return max;}
}

不过超时了,可以优化一下,从前往后遍历,每遍历到一个数,即每去到一天时,去存最低价跟最大利润,因为最低价购入可以得到更大利润,最高价直接更新最大利润。

时间复杂度: O(n),空间复杂度: O(1)。

public class Solution {public int maxProfit(int[] prices) {int pre = prices[0];int ans = 0;for (int i = 0; i < prices.length; i++) {ans = Math.max(ans, prices[i] - pre);pre = Math.min(pre, prices[i]);}return ans;}
}

贪心的策略是,每到一个数可存到一个局部最优解,而遍历完后做一次次更新去得到目标值。 

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

相关文章:

  • 蚁剑(AutSword)的下载安装与报错解决
  • 【全栈开发】----Mysql基本配置与使用
  • Spring Boot项目的基本设计步骤和相关要点介绍
  • 【Spring快速入门】不断更新...
  • nodejs版本管理,使用 nvm 删除node版本,要删除 Node.js 的某个版本详细操作
  • HTML之JavaScript DOM(document)编程处理事件
  • 5.【线性代数】—— 转置,置换和向量空间
  • 移动通信发展史
  • Python MoviePy 视频处理全攻略:从入门到实战案例
  • uniapp webview嵌入外部h5网页后的消息通知
  • macos安装jmeter测试软件
  • 【virtiofs】ubuntu24.04+qemu7.0调试virtiofs
  • DeepSeek 和 ChatGPT 在特定任务中的表现:逻辑推理与创意生成
  • MoE硬件部署
  • MYSQL中的性能调优方法
  • Day48(补)【AI思考】-设计模式三大类型统一区分与记忆指南
  • 公牛充电桩协议对接单车汽车平台交互协议外发版
  • 大语言模型内容安全的方式有哪些
  • 【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑩】
  • Android WindowContainer窗口结构
  • 从零到一实现微信小程序计划时钟:完整教程
  • moveable 一个可实现前端海报编辑器的 js 库
  • wangEditor 编辑器 Vue 2.0 + Nodejs 配置
  • DeepSeek R1生成图片总结2(虽然本身是不能直接生成图片,但是可以想办法利用别的工具一起实现)
  • x86平台基于Qt+opengl优化ffmpeg软解码1080P视频渲染效率
  • 机器学习入门-读书摘要
  • 前端【技术方案】重构项目
  • 大语言模型简史:从Transformer(2017)到DeepSeek-R1(2025)的进化之路
  • RabbitMQ服务异步通信
  • Python常见面试题的详解7