LeetCode 121 买卖股票的最佳时机
1. 题目地址
https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/?envType=study-plan-v2&envId=top-interview-150
2. 题解

这道题由于要求最大利润(最大差值),因此我们可以:
1. 设计一个指针i,让其从前往后遍历。其中,i代表卖出天数。
2. 维护一个最小值,该最小值代表在某一天买入的最小值。(注意:买入的天数不能大于卖出的天数且买入的价格不能大于卖出的价格)
3. 在遍历指针i的过程中动态维护最小值。因为,当在某一天卖出的话,要想获得最大利润,必须找到买入的最小值。这样才能使得差值最大。(买入的天数不能大于卖出的天数)
根据上述算法:时间复杂度为O(n)。具体可以看上图。
3. 代码
class Solution {
public:
int maxProfit(vector<int>& prices) {
int maxPrice = 0;
int minPrice = prices[0];
for(int i = 1;i < prices.size(); i ++){
minPrice = min(minPrice,prices[i-1]);
if(prices[i] < minPrice){
continue;
}
maxPrice = max(maxPrice,prices[i] - minPrice);
}
return maxPrice;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix