(C++)Leetcode狂刷200题——标签“数组篇--简单难度10道 #121. 买卖股票的最佳时机

VSCode摸鱼插件大比拼:LeetCode刷题、小说阅读、股票盯盘,哪个更适合你? 本文深度评测VSCode三大摸鱼神器插件:LeetCode刷题、小说阅读和股票盯盘,从隐蔽性、功能完整度、资源占用和操作干扰度四大维度进行对比分析。提供各插件的安装配置指南、隐蔽操作技巧及组合使用方案,帮助开发者在工作间隙高效放松或自我提升,同时维持专业形象。 阅读详情

在这里插入图片描述

第五道题 #121. 买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
注意:你不能在买入股票前卖出股票。
示例 1:
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
示例 2:
输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1、暴力直接解法 时间复杂度:O(n^2),空间复杂度:O(1)。

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int prices_size = prices.size();
				if(prices_size == 0)    return o;  //如果数组为空直接返回0.
        int MAX = 0;   //设置最大收益初始值为零
        for(int i = 1; i < prices_size; i++){
            for(int j = 0; j<i; j++){     //两次遍历时间复杂度为O(n^2)
                MAX= max(MAX , prices[i]-prices[j]); //最大收益为当日价格减去之前的最低价格
            }
        }
        return MAX;
    }
};

2、直接一次遍历 时间复杂度:O(n)。空间复杂度:O(1)。
使用一个变量记录一个历史最低价格 min_price(初始值设为最大的有符号整数),一个变量记录最大收益值max_profit(并将初始值设为0),那么我们在第 i 天卖出股票能得到的利润就是 prices[i] - minprice,然后更新max_profite的值,遍历结束后输出max_profit的值即可。

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int max_profit = 0;   //最大收益值
        int min_price = INT_MAX;   //历史最低价格
        for(int price: prices){
            min_price = min(min_price , price);
            max_profit = max(max_profit , price - min_price);   // 更新最大收益值
        }
        return max_profit;
    }
};

3、动态规划 时间复杂度:O(n)。空间复杂度:O(1)。
dp[i] 表示前i天的最大利润,dp[i] = max(dp[i-1], prices[i]-min_price)。最后输出dp[n-1] 即为最大化收益。

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int n = prices.size();
        if (n == 0) return 0; 
         vector<int> dp(n,0);  
         dp[0] = 0;   //设置动态方程的初始值
        int min_price = prices[0];   //历史最低价格

        for(int i = 1; i < n; i++){
            min_price = min(min_price , prices[i]);  // 更新历史最低价格
            dp[i] = max(dp[i-1], prices[i] - min_price);  //更新dp的值
        }
        return dp[n-1];
    }
};
LeetCode高效刷题全攻略:从环境搭建到实战模板的系统方法论 算法与数据结构是计算机科学的核心基础,它们通过特定的逻辑组织和操作规则,为解决复杂问题提供高效方案。其原理在于将问题抽象为可计算模型,利用时间与空间复杂度的权衡来优化性能。掌握这些基础对于提升编程能力、优化系统性能具有重要技术价值,广泛应用于搜索引擎、推荐系统、数据库索引等场景。本文聚焦于LeetCode刷题实践,系统性地分享了从环境配置、科学路线规划到高频题型模板的完整方法论,旨在帮助开发者通过刻意练习,将算法知识内化为解决实际编码问题的能力,有效应对技术面试中的动态规划与二分查找等经典考察点。 阅读详情

相关推荐

VSCode摸鱼插件大赏:从LeetCode刷题到状态栏读小说,5款神器实测分享

本文深度评测5款VSCode摸鱼插件,包括LeetCode刷题、状态栏读小说、实时股票监控等隐蔽功能,帮助开发者在IDE中高效学习与放松。重点介绍LeetCode插件的本地调试和专注模式,实现工作与提升的无缝切换。

weixin_42523792的博客 567

LeetCode:121.买卖股票的最佳时机——动态规划

121. 买卖股票的最佳时机(1、2)——动态规划、贪心策略 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择**某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票**。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 🍎道阻且长,行则将至。🍓!!!

Super algorithm 的博客,技术爱好者。 3266

华为OD算法机试实战指南:从LeetCode到ACM模式的备考策略

算法是计算机科学的核心基础,它通过一系列明确的指令解决特定问题,其效率由时间与空间复杂度衡量。在工程实践中,算法能力直接影响软件性能与资源利用率,尤其在数据处理、系统优化等场景中至关重要。对于求职者而言,企业机试常采用ACM模式,这与LeetCode的友好环境存在显著差异,要求开发者具备完整的输入输出处理、全局代码结构设计与自主调试能力。掌握从问题抽象、算法选择到代码实现的完整链路,是应对华为OD等技术面试的关键。本文聚焦ACM模式与核心算法,结合动态规划、Dijkstra算法等高频考点,提供从知识体系构建

weixin_30536513的博客 514

一文搞定所有 — — 买卖股票的最佳时机问题

第

SoyMilk的博客 1446

华为OD机考编程题全解析:从核心考点到AI辅助备考实战

数据结构与算法是计算机科学的核心基础,它们通过特定的组织与计算逻辑,高效解决各类实际问题。理解数组、链表、栈、队列、哈希表等数据结构的特性,以及排序、查找、递归、动态规划等算法思想,是评估开发者问题抽象与解决能力的关键。在工程实践中,这些技术价值体现在提升软件性能、保障系统稳定及优化资源利用上,广泛应用于搜索引擎、推荐系统、路径规划等场景。针对技术招聘中的编程能力考核,如华为OD机试,系统掌握这些核心考点并运用AI编程工具进行高效备考,已成为求职者提升竞争力的重要路径。本文聚焦华为OD机考,深入解析其高频考

weixin_33725126的博客 587

小红书算法笔试真题解析:社交网络与内容推荐

图论算法和动态规划是解决社交网络与内容推荐问题的核心技术。通过邻接表或并查集数据结构,可以高效处理用户关系分析,如判断用户间的连通性。动态规划则常用于内容热度预测,结合时间衰减因子计算权重值。这些技术在社交网络分析、用户行为挖掘和内容推荐等场景中具有广泛应用。小红书等平台的算法笔试常考察这些知识点,掌握BFS、DFS遍历及状态转移方程等技巧,能有效提升解题效率。社交网络中的稀疏图处理和实时更新优化是工程实践中的关键挑战。

weixin_30924239的博客 410

【LeetCode-简单】121. 买卖股票的最佳时机(详解)

java:暴力循环 、一次遍历

丨康有为丨的博客 1509

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01

当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。

weixin_49199313的博客 1270

LeetCode 121. 买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 示例 1: 输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1

tomjobs的博客 1764

【SAP GUI 脚本 VBA】实战:构建Excel驱动的SAP自动化操作平台

本文详细介绍了如何利用VBA和SAP GUI脚本构建Excel驱动的SAP自动化操作平台,实现高频事务码的标准化封装和批量处理。通过实战案例展示物料主数据查询(MM03)、会计凭证修改(FB02)等场景的自动化实现,帮助用户提升10倍+操作效率,同时确保数据可追溯性和操作安全性。

weixin_33748818的博客 504

【讯飞星火大模型AI】SpringBoot整合星火API:从零构建智能数据分析助手

本文详细介绍了如何使用SpringBoot框架整合讯飞星火大模型API,从零构建一个智能数据分析助手。通过清晰的步骤,指导开发者完成API密钥申请、项目搭建、SDK集成与核心代码编写,实现用户通过自然语言指令和CSV数据,即可自动获得ECharts图表代码与专业数据分析结论,极大降低数据分析与可视化的门槛。

neovim7hacker的博客 275

买卖股票的最佳时机(C++解法)

给定一个数组 prices,它的第 i个元素prices[i]表示一支给定股票第 i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。

m0_62275194的博客 595

香橙派5使用RK3588S内置NPU加速yolov5推理,实时识别数字达到50fps

香橙派5采用了RK3588S,内置的NPU达到了6Tops的算力,博主这里记录一下自己的踩坑过程,好不容易做出来的不能以后忘记了(手动狗头)。这里博主还在B站上发布了效果视频,大家感兴趣的话可以看一下。其中解决了先验框标注位置不对,或者出现非常多的框的问题

weixin_51651698的博客 2万+

程序员刷题平台全攻略:从LeetCode到Codeforces的选型与高效使用指南

在线判题系统(Online Judge, OJ)是程序员提升算法与数据结构能力、备战技术面试的核心工具。其原理在于通过自动化评测代码的正确性、时间与空间效率,为学习者提供即时反馈。掌握OJ的使用能有效构建算法思维,提升工程实践中的问题解决能力,是求职面试和竞赛准备的关键技术环节。在众多应用场景中,不同平台各有侧重:例如,LeetCode聚焦于**面试真题**和系统性学习路径,是求职者的首选;而Codeforces则以高频竞赛和活跃社区著称,适合追求**算法竞赛**与思维深度训练的开发者。理解各平台特点并进行

congji3817的博客 407

全球最大光伏电池缺陷异常检测数据集PVELAD【发布】

下载地址 1:GitHub - binyisu/PVEL-AD 下载地址 2:http://aihebut.com/col.jsp?id=118 下载地址 3:NAVEDownload 竞赛测试系统:Photovoltaic cell anomaly detection | Kaggle 一、简介 PVEL-AD 数据集又叫做EL2021数据集是用于对光伏电池异常缺陷检测方法进行基准测试的数据集,重点是光伏电池工业检测。PVEL-AD包含 36,543 张具有各种内部缺陷和异构背...

苏打水的杯子的博客 2万+

【数据集】未来不同情景下预测数据:如人口、土地利用等

未来不同情景下预测数据:如人口、土地利用等

WW、forever的博客 2994

LeetCode高效刷题指南:从零构建算法思维与面试实战体系

数据结构与算法是计算机科学的核心基础,其本质是解决实际问题的抽象模型与效率优化方法。理解数组、链表、树、图等数据结构的工作原理,掌握递归、动态规划、双指针等算法思想,是提升编程能力和软件设计水平的关键。这些技术价值在于能将复杂工程问题转化为可计算、可优化的模型,广泛应用于搜索引擎、推荐系统、数据库索引等高性能场景。本文聚焦于通过LeetCode平台进行系统性算法训练,提供一套涵盖环境配置、专题规划、四步解题法及面试技巧的完整路径,旨在帮助开发者克服盲目刷题、效率低下的困境,通过刻意练习和深度复盘,将‘三数之

weixin_34293246的博客 407

双Orin PCIe RC&EP模式互通

orin pcie 互通

乐于分享 3877

每周技术面试高频题汇总:大厂面试官到底在考什么?完整实战指南

大家好,又到了每周的面试复盘时间。。现在的面试官更喜欢把你扔进一个具体的“场景”里,看你怎么思考、怎么权衡(Trade-off)。基于过去一周 优快云、掘金、LeetCode 等社区的热议内容,我为大家精选了,涵盖算法、系统设计、数据库和网络四大领域。咱们不整那些虚的,直接上干货,看看这些题目背后的考察点和解题思路。

热爱技术与前沿创新,深耕科技领域,在科创中精进自我;探索技术乐趣,分享技术干货与成长心得,以技术为伴,热爱生活,在科创与生活中双向成长。 482

发那科机器人karel程序

备份和查看发那科机器人中的 Karel 程序的过程主要包括从示教器中备份程序,并通过 RoboGuide 等仿真软件查看和运行程序。步骤相对简单,但需要确保你的设备和软件已经设置好,可以通过 FTP 或直接从示教器的外部存储设备进行操作。如果你在操作过程中遇到问题,建议查阅相关的用户手册或联系发那科的技术支持,确保设备设置正确。如果你有更具体的问题或需要进一步帮助,欢迎继续提问!希望如上措施及解决方案能够帮到有需要的你。

**My Coding Family** 1600

强化学习(Q-learning、DQN) —— 理论、案例与交互式 GUI 实现

本文详细介绍了强化学习中基于值函数的 Q-learning 算法及深度强化学习的 DQN 方法,从基本理论、数学模型到算法流程均进行了全面阐述。通过迷宫导航、股票交易策略和机器人控制等典型案例,展示了强化学习在处理高维、非线性和时变问题中的强大适应性。为了帮助工程师和研究者更直观地理解强化学习的训练过程,本文还提供了一份基于 Python 与 PyQt6 实现的交互式 GUI 演示系统代码示例,用户可以在线调整参数,实时观察累计奖励和 Q 值的变化,从而更深入地理解算法收敛和策略演化的过程。

闲人编程的博客 1475

Google SDE面试全流程解析与高频题型备战策略

大型科技公司的技术面试通常考察算法、系统设计和工程实践能力的综合运用。以Google为代表的面试流程具有高度标准化特点,其核心评估维度包括算法实现能力、系统设计思维以及文化契合度(Googleyness)。在技术原理层面,动态规划、图算法和并发编程是高频考点,常需要结合分布式系统概念如CAP定理、一致性哈希等进行综合设计。工程实践中,面试官特别关注候选人对数据倾斜、分片策略等实际问题的处理能力,这反映了企业对工程判断力的重视。针对Google面试的独特机制,有效的备战策略应包括分阶段刷题、模拟面试训练以及行

weixin_33937499的博客 306

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

20天高效备战大厂面试:策略与实战指南

在计算机科学领域,算法与系统设计是软件工程师的核心能力。动态规划作为经典算法范式,通过将复杂问题分解为子问题来优化求解效率,在解决背包问题、股票买卖等场景中展现强大威力。系统设计则关注高并发架构与分布式存储,涉及Redis集群扩容、微服务治理等关键技术。这些能力直接决定开发者能否通过大厂技术面试,特别是在处理短视频去重算法、OOM问题排查等实际工程挑战时。本文基于作者斩获多家互联网公司offer的实战经验,提炼出包含目标企业分析、时间管理、题库精炼等模块的高效备战方案,帮助求职者在有限时间内实现精准突破。

523

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

动态规划核心思想与实战:从最优子结构到经典案例解析

动态规划是一种通过将复杂问题分解为重叠子问题并存储子问题解来高效求解的算法范式,其核心原理基于最优子结构和重叠子问题两大要素。在算法设计与优化中,动态规划通过记忆化存储避免了重复计算,显著提升了处理如最短路径、资源分配等问题的效率。该技术广泛应用于计算机科学的多个领域,包括运筹学、生物信息学序列比对、以及各类最优化问题。本文以斐波那契数列、0-1背包问题和最长公共子序列等经典案例,深入剖析了动态规划的状态定义、转移方程构建及空间优化技巧,为应对算法面试中的高频动态规划问题提供了清晰的解题框架和实战指南。

weixin_30653023的博客 339

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

贝尔曼的秘密:用计算顺序与选择性遗忘压缩动态规划

动态规划的本质并非状态定义或递推公式,而是对计算过程的工程化调度。其核心原理在于识别状态间的依赖图、确定最小必要状态集(依赖半径),并通过严格控制更新顺序与生命周期实现空间压缩。这种‘面向执行’的建模哲学,将O(n)内存降至O(1),使算法在嵌入式、实时系统和人工可验证场景中真正可行。技术价值体现在资源受限下的确定性求解能力——不追求理论最优,而保障在2KB内存、10ms延迟或手算复核约束下给出可靠结果。典型应用场景包括边缘AI推理、高频交易风控、MCU级路径规划等。本文聚焦贝尔曼式精巧调度,揭示如何用三变

408

国产AI大模型实战选型与本地部署避坑指南

大语言模型(LLM)作为人工智能核心基础设施,其开源生态正快速演进。理解模型能力边界、推理原理与部署成本,是技术落地的前提。本文聚焦中文大模型的实测能力矩阵,涵盖语义准确性、长上下文稳定性、多模态对齐及代码生成等关键技术维度,并深入解析AWQ量化、vLLM推理引擎、RoPE位置编码优化等工程实践要点。结合GLM-4、Qwen2、Yi-1.5等主流国产模型在政务公文、教育工具、边缘部署等真实场景的表现差异,揭示‘免费开源’背后的显存、带宽与人力三重隐性成本,为开发者与技术决策者提供可复用的选型框架与生产级调优

weixin_30905133的博客 566
上一篇: (C++)Leetcode狂刷200题——标签“数组篇--简单难度10道 #717 1比特与2比特字符
下一篇: (C++)Leetcode狂刷200题——标签“数组篇--简单难度10道 #88. 合并两个有序数组
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值