题目:121. 买卖股票的最佳时机
思路:动态规划,for循环枚举卖出的时间点,维护遍历过的元素里最低的价格mn。时间复杂度0(n)。
class Solution {
public:
int maxProfit(vector<int>& prices) {
//最大利润
int t=0;
//记录最低价格
int mn=prices[0];
for(auto x:prices){
//更新最大利润
t=max(t,x-mn);
//维护最低价格
mn=min(mn,x);
}
return t;
}
};
JAVA版本:
class Solution {
public int maxProfit(int[] prices) {
//最大利润
int t=0;
//记录最低价格
int mn=prices[0];
for(var x:prices){
//更新最大利润
t=Math.max(t,x-mn);
//维护最低价格
mn=Math.min(mn,x);
}
return t;
}
}