目录
Leecode 121.买卖股票的最佳时机
题目地址:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
题目类型:股票问题
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
// dp[i]代表在第i天卖出所能获得的最大利润
vector<int> dp(n);
int min_price = prices[0];
for (int i = 1; i < n; ++i) {
dp[i] = max(dp[i - 1], prices[i] - min_price);
min_price = min(min_price, prices[i]);
}
return dp[n - 1];
}
};
Leecode 122.买卖股票的最佳时机 Il
题目地址:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
题目类型:股票问题
方法一:贪心
class Solution {
public:
int maxProfit(vector<int>& prices) {
int sum = 0;
for (int i = 1; i < prices.size(); ++i) if (prices[i] > prices[i - 1]) sum += prices[i] - prices[i - 1];
return sum;
}
};
方法二:动态规划
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
// dp[i]代表截止到第i天所能获得的最大利润
vector<int> dp(n);
int min_price = prices[0];
for (int i = 1; i < n; ++i) {
// 如果可以卖
if (prices[i] > min_price) {
dp[i] = dp[i - 1] + prices[i] - min_price;
min_price = prices[i];
}
else {
dp[i] = dp[i - 1];
min_price = min(min_price, prices[i]);
}
}
return dp[n - 1];
}
};