買賣股票的最佳時機

在這裏插入圖片描述
大致思路如下:從左往右遍歷,先用一個變量記錄第一個數,然後第二個數開始,如果比記錄的數小,就重新賦值,否則就計算這兩個數的差值。遍歷完一遍之後也就找到了最大的差值。時間複雜度O(n),空間複雜度O(1)代碼如下:

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        if(prices.empty())  return 0;
        int min=prices[0],ans=0;
        for(int i=0;i<prices.size();i++)
            if(min>prices[i])   min=prices[i];
            else   ans=max(ans,prices[i]-min);
        return ans;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章