时间复杂度O(n),需遍历一边数组。空间复杂度O(1)。
class Solution { public: int maxProfit(vector<int>& prices) { if (prices.size() < 2) return 0; int min = prices[0]; //第一天买入 int difmax = max(0, prices[1] - min); //设置前两天作为最大利润 for (int i = 2; i < prices.size(); ++i) { if (prices[i - 1] < min) //更新买入最小值 min = prices[i - 1]; if (prices[i] - min > difmax) difmax = prices[i] - min; } return difmax; } };