好家伙转眼快一个月没写题解了,过年题还是有在慢慢刷的,只是速度慢了很多哈哈哈。
121. 买卖股票的最佳时机 - 力扣(LeetCode)
解法一:枚举
做法大概就是我们枚举每一天的时候都假设该天卖出股票,我们去寻找该天之前的股票可以买入的最低价,然后在枚举过程中不断更新更优的答案
class Solution {
public:
int maxProfit(vector<int>& prices) {
int res = 0;
for(int i = 0,minp = INT_MAX;i < prices.size();i ++ ) {
minp = min(minp,prices[i]);
res = max(res,prices[i] - minp);
}
return res;
}
};
解法二:动态规划
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
if(n < 2)return 0;
int f[n + 1][2];
f[0][0] = 0,f[0][1] = -prices[0];
for(int i = 1;i < n;i ++ ) {
f[i][1] = max(f[i - 1][1],-prices[i]);
f[i][0] = max(f[i - 1][0],f[i - 1][1] + prices[i]);
}
return f[n - 1][0];
}
};