您现在的位置是:首页 >技术交流 >算法与数据结构(买卖股票的最佳时机)网站首页技术交流
算法与数据结构(买卖股票的最佳时机)
简介算法与数据结构(买卖股票的最佳时机)
题目

思路
这个题有一种简单思路就是用i进行遍历,求i位置之后与i位置数据的最大差值。这要用两个循环进行嵌套,这就导致时间复杂度是O(N^2)。
那有没有时间复杂度更低的算法呢,那当然是有的。
我们在买股票之前肯定想如果我买的时候价格最低就好了,那么我们就可以用一个变量min_price来记录i位置之前的历史最低价格,我们就可以假设自己的股票是在那天买的,那我们第i天卖出的利润就是prices[i]-min_price。
那么我们就只需要遍历数组一遍,每天想的就是如果我在最低点购买股票能赚多少利润即可。
解题过程
首先将初始股票价格作为最低价,假设最大利润最初为0。
遍历prices数组,若当天股票价格减去i之前的历史最低价大于最大利润,则进行替换。
若i位置的股票价格小于历史最低价,则替换i位置的值为新的历史最低价。
代码
class Solution {
public:
int maxProfit(vector<int>& prices)
{
int min_price=prices[0];//记录最低价格
int max_profit = 0; //记录最高利润
for(int i=1;i<prices.size();i++)
{
if(prices[i]-min_price > max_profit)
max_profit = prices[i]-min_price;
if(prices[i]<min_price)
min_price = prices[i];
}
return max_profit;
}
};
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
U8W/U8W-Mini使用与常见问题解决
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结