Best Time to Buy and Sell Stock

 

 暴力求解法,直接遍历求最大值

class Solution {
public:
    int maxProfit(vector<int>& prices) 
    {
        int maxprofit=0;
        for(int i=0;i<prices.size();i++)
        {
            for(int j=i+1;j<prices.size();j++)
            {
                maxprofit=max(maxprofit,prices[j]-prices[i]);
            }
        }
        return maxprofit;
    }
};

  但是这种方法时间复杂度过高

所以我们只需要一次遍历

寻找出最低点,在寻出与最低点距离最远的最大值

class Solution {
public:
    int maxProfit(vector<int>& prices) 
    {
        int minpoint=prices[0];
        int maxprofit=0;
        for(int price:prices)
        {
            maxprofit=max(maxprofit,price-minpoint);
            minpoint=min(minpoint,price);
        }
        return maxprofit;
    }
};

  

posted @ 2021-04-02 12:18  章大佬  阅读(37)  评论(0)    收藏  举报