题解 | #买卖股票的最好时机(一)#
买卖股票的最好时机(一)
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; } };
自己的做法