题目:

代码(首刷自解 2024年2月29日):
一个easy题做那么久,自我检讨一下
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
if (n == 1) return 0;
vector<int> dp(n + 1, 0);
int minv = INT_MAX;
for (int i = 1; i <= n; ++i) {
if (prices[i - 1] < minv) minv = prices[i - 1];
dp[i] = max(dp[i - 1], prices[i - 1] - minv);
}
return dp[n];
}
};
代码(二刷看解析 贪心 2024年3月9日)
我怀疑我智力有问题,为什么怎么简单的题的贪心都想不出来。
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
int low = INT_MAX;
int result = INT_MIN;
for (int i = 0; i < n; ++i) {
low = min(low, prices[i]);
result = max(result, prices[i] - low);
}
return result;
}
};
代码(三刷自解 贪心 2024年7月30日)
我的智力回来了
class Solution {
public:
int maxProfit(vector<int>& prices) {
int res = 0;
int min = INT_MAX;
for (int i = 0; i < prices.size(); i++) {
if (prices[i] < min) min = prices[i];
if (prices[i] > min) {
int temp = prices[i] - min;
if (temp > res) res = temp;
}
}
return res;
}
};
文章比较了两种求解股票交易中最大利润的Java代码实现,一个是动态规划方法,另一个是贪心策略。作者反思了在处理简单问题时的思考过程和策略选择。

被折叠的 条评论
为什么被折叠?



