题解 | #买卖股票的最好时机(一)#
买卖股票的最好时机(一)
https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec
class Solution {
public:
/**
*
* @param prices int整型vector
* @return int整型
*/
// 自己写 O(n) O(1)
// dp数组记录 当前天为止的最大利润
int maxProfit(vector<int>& prices) {
// write code here
int n = prices.size();
if(n<2)
{
return 0;
}
if(n==2)
{
int ans = prices[1] - prices[0];
return ans>0 ? ans : 0;
}
int minp = 10001; // 一直维护前面的最小值
minp = min(prices[0], prices[1]);
int pre = (prices[1] - prices[0])>0 ? (prices[1] - prices[0]) : 0;
int cur = 0, ans = 0;
for(int i=2; i<n; ++i)
{
int a = prices[i] - minp;
cur = max(pre, a); // 对比 今天不卖出 和 今天卖出的情况
// 更新
pre = cur;
minp = min(minp, prices[i]);
ans = max(ans, cur);
}
return ans;
}
};
自己的做法