工商网站查询企业信息官网全国做物流网站模块

张小明 2026/3/13 0:05:04
工商网站查询企业信息官网全国,做物流网站模块,wordpress 时区,打赏网站开发题目描述给定一个整数数组 prices#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。在每一天#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。然而#xff0c;你可以在 同一天 多次买卖该股票#xff0c;但要确保你持有的股票不…题目描述给定一个整数数组prices其中prices[i]表示某支股票第i天的价格。在每一天你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。然而你可以在同一天多次买卖该股票但要确保你持有的股票不超过一股。返回你能获得的最大利润。示例 1text输入prices [7,1,5,3,6,4] 输出7 解释在第 2 天买入第 3 天卖出利润 5-14 在第 4 天买入第 5 天卖出利润 6-33 总利润 437示例 2text输入prices [1,2,3,4,5] 输出4 解释在第 1 天买入第 5 天卖出利润 5-14 注意你不能在第 1 天和第 2 天连续买入股票示例 3text输入prices [7,6,4,3,1] 输出0 解释没有交易完成最大利润为 0解法一贪心算法面试推荐⭐核心思想只要今天的价格比昨天高就昨天买入今天卖出。虽然这看起来像是频繁交易但数学上等价于在价格上升波段的最低点买入、最高点卖出。算法步骤从第二天开始遍历价格数组计算当天与前一天的价格差如果价格差为正当天价格 前一天价格则累加到总利润中返回总利润代码实现javaclass Solution { public int maxProfit(int[] prices) { int profit 0; for (int i 1; i prices.length; i) { int diff prices[i] - prices[i - 1]; if (diff 0) { profit diff; } } return profit; } }复杂度分析时间复杂度O(n)只需遍历一次数组空间复杂度O(1)只使用了常数级别的额外空间为什么这是正确的考虑价格序列 [1, 3, 5]贪心算法第1天买入第2天卖出利润2第2天买入第3天卖出利润2总利润4最优策略第1天买入第3天卖出总利润4两种策略结果相同因为 (5-1) (3-1) (5-3)解法二动态规划通用解法核心思想定义两个状态dp[i][0]第i天结束时不持有股票的最大利润dp[i][1]第i天结束时持有股票的最大利润状态转移方程textdp[i][0] max(dp[i-1][0], dp[i-1][1] prices[i]) // 保持空仓或卖出 dp[i][1] max(dp[i-1][1], dp[i-1][0] - prices[i]) // 保持持有或买入代码实现javaclass Solution { public int maxProfit(int[] prices) { int n prices.length; int[][] dp new int[n][2]; dp[0][0] 0; // 第一天不持有股票 dp[0][1] -prices[0]; // 第一天持有股票需要买入 for (int i 1; i n; i) { dp[i][0] Math.max(dp[i-1][0], dp[i-1][1] prices[i]); dp[i][1] Math.max(dp[i-1][1], dp[i-1][0] - prices[i]); } return dp[n-1][0]; // 最后一天不持有股票时利润最大 } }空间优化版本javaclass Solution { public int maxProfit(int[] prices) { int hold -prices[0]; // 持有股票的最大利润 int notHold 0; // 不持有股票的最大利润 for (int i 1; i prices.length; i) { int prevHold hold; hold Math.max(hold, notHold - prices[i]); notHold Math.max(notHold, prevHold prices[i]); } return notHold; } }复杂度分析时间复杂度O(n)空间复杂度未优化版本 O(n)优化版本 O(1)解法三峰谷法直观理解核心思想寻找价格序列中的连续上升波段在每个波段的谷底买入、峰顶卖出。算法步骤初始化利润为0指针i从0开始寻找价格低谷价格开始上升的点寻找价格高峰价格开始下降的点计算峰谷差值并累加到利润重复直到遍历完整个数组代码实现javaclass Solution { public int maxProfit(int[] prices) { int profit 0; int i 0; int n prices.length; while (i n - 1) { // 寻找低谷价格停止下降的点 while (i n - 1 prices[i] prices[i 1]) { i; } int valley prices[i]; // 寻找高峰价格停止上升的点 while (i n - 1 prices[i] prices[i 1]) { i; } int peak prices[i]; profit peak - valley; } return profit; } }复杂度分析时间复杂度O(n)每个元素最多被访问两次空间复杂度O(1)面试推荐写法首推贪心算法 ✅原因代码最简洁仅5-7行时间空间复杂度最优容易理解和解释面试中快速写出并分析正确性面试回答模板这道题可以使用贪心算法解决。核心思想是只要第二天的价格比第一天高就把这个差价算作利润。虽然看起来像是频繁交易但实际上等价于在价格上升波段中一直持有股票。算法的时间复杂度是O(n)空间复杂度是O(1)。备选动态规划如果面试官要求更通用的解法或者后续问题扩展如含交易费、冷冻期等可以使用动态规划解法。扩展思考如果加上交易手续费每次卖出时扣除手续费javapublic int maxProfit(int[] prices, int fee) { int hold -prices[0]; int notHold 0; for (int i 1; i prices.length; i) { hold Math.max(hold, notHold - prices[i]); notHold Math.max(notHold, hold prices[i] - fee); } return notHold; }如果加上冷冻期卖出后需要等待一天才能买入javapublic int maxProfit(int[] prices) { if (prices.length 1) return 0; int hold -prices[0]; int notHold 0; int coolDown 0; // 冷冻期 for (int i 1; i prices.length; i) { int prevHold hold; hold Math.max(hold, coolDown - prices[i]); coolDown notHold; notHold Math.max(notHold, prevHold prices[i]); } return notHold; }总结解法时间复杂度空间复杂度推荐指数适用场景贪心算法O(n)O(1)⭐⭐⭐⭐⭐面试首选代码简洁高效动态规划O(n)O(1)~O(n)⭐⭐⭐⭐通用性强可扩展峰谷法O(n)O(1)⭐⭐⭐直观理解价格波段关键点贪心算法是本题的最优解法动态规划是解决股票问题的通用框架理解贪心算法的正确性多次买卖的总利润等于所有上升波段差值的和在面试中建议先给出贪心解法然后如果时间允许或面试官要求再讨论动态规划解法以展示你的全面性。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设南京公司网站开发整体制作流程

星海FR系列快恢复二极管凭借其卓越的性能和多样化的封装形式,深受工程师和电子爱好者的青睐。这里,我们对星海FR系列三种封装快恢复二极管:DO-15、DO-201AD、R-6的全面对比与应用解析,探讨它们各自的特点及应用场景。封装对比DO-1…

张小明 2026/3/5 5:57:30 网站建设

多种大连网站建设新手搭建论坛己做网站

UI自动化巡检终极指南:5分钟快速上手指南 【免费下载链接】online-inspection-tracker 线上UI自动化巡检系统 项目地址: https://gitcode.com/gh_mirrors/on/online-inspection-tracker 还在为线上Web应用频繁出现的UI异常而烦恼吗?😩…

张小明 2026/3/5 5:57:31 网站建设

做网站开视频网站做网站选什么系统

第一章:Open-AutoGLM后台运行机制概述Open-AutoGLM 是一个基于大语言模型的自动化任务调度系统,其后台运行机制融合了异步处理、任务队列与模型推理优化技术,确保高并发场景下的稳定性与响应效率。核心架构设计 系统采用微服务架构&#xff0…

张小明 2026/3/12 17:43:47 网站建设

网站开发协义网页设计图片超链接怎么做

Linly-Talker容器化部署:Docker镜像快速启动教程 在直播带货、AI客服、虚拟讲师等场景中,数字人正从科幻概念变为现实生产力。但构建一个能“听懂、回应、说话、动嘴”的完整对话系统,往往意味着要整合语音识别(ASR)、…

张小明 2026/3/5 5:57:35 网站建设

沧州企业网站专业定制企业官方网站怎么做

六音音源完整修复指南:快速解决音乐播放难题 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 还在为洛雪音乐升级后无法播放歌曲而烦恼吗?六音音源修复版为您提供完美的解决…

张小明 2026/3/5 5:57:36 网站建设

做网站一般多少钱网站开发软件的选择

一、问题现象重述 在Anolis OS 8.6系统(基于RHEL 8.6)中,已通过yum 4.7.0安装A-1.0.0和B-1.0.0软件包。当挂载OS-v2的ISO作为yum源后,执行yum install A B时出现以下典型现象: 系统提示需要安装多个新增依赖包部分依…

张小明 2026/3/5 5:57:36 网站建设