121. 买卖股票的最佳时机/C++

121. 买卖股票的最佳时机/C++_第1张图片
动态规划,第i天能获得的最大利润为第i-1天能获得的最大利润+prices[i]-prices[i-1],如果该值小于0,则该天的最大收益是0,不买卖股票.

    int maxProfit(vector<int>& prices) {
        int pmax=0,pcur=0;
        for(int i=1;i<prices.size();++i){
            pcur+=prices[i]-prices[i-1];
            pcur=pcur>=0?pcur:0;
            if(pcur>pmax)
                pmax=pcur;
        }
        return pmax;
    }

动态规划 前i天的最大收益 = max{前i-1天的最大收益,第i天的价格-前i-1天中的最小价格}

int maxProfit(vector<int>& prices) {
        int pmax=0,pmin=INT_MAX;
        for(int i=0;i<prices.size();++i){
            pmin=min(prices[i],pmin);
            pmax=max(prices[i]-pmin,pmax);
        }
        return pmax;
    }

你可能感兴趣的:(动态规划,LeetCode/C++)