【Hot 100】121. 买卖股票的最佳时机
目录
- 引言
- 买卖股票的最佳时机
- 我的解题
- 🙋♂️ 作者:海码007
- 📜 专栏:算法专栏
- 💥 标题:【Hot 100】121. 买卖股票的最佳时机
- ❣️ 寄语:书到用时方恨少,事非经过不知难!
引言
今天开始贪心算法篇章,前一个星期有些事情耽搁了,今天继续。
买卖股票的最佳时机
- 🎈 题目链接:
- 🎈 做题状态:
我的解题
只需要遍历一次,而且是在第一次遍历就记录当前最小的股票价格,然后再计算卖出当前股票能赚到的利润,并更新最大利润。
不能是先遍历计算历史的最低价格,因为卖出需要在买入之前进行。所以遍历的时候不断更新当前股票最小价格就行,右侧的最小价格,不会影响左侧股票卖出赚到的利润。
下面的解法,其实就是将dp进行状态压缩了,不需要维护一个完整的dp数组,只需要维护两个变量就行。
class Solution {
public:int maxProfit(vector<int>& prices) {// 低点买,高点卖int maxprofit = 0;int minprice = INT_MAX;for (int price : prices){minprice = min(minprice, price); // 记录当前最小的股票价格maxprofit = max(maxprofit, price - minprice); // 记录当前最大利润}return maxprofit;}
};