股票交易。获得最大利润问题、

本题源自leetcode  121-123

-------------------------------------------------------

1 只可以交易一次,求最大的利润


思路1 用俩个变零来标记最便宜的价格,和最大的利润。

代码:

 int maxProfit(vector& prices) {
        int maxPro=0;
        int minPrice=INT_MAX;
        for(int i=0;i

2 可以交易多次,但每次买入前,一定要把之前的卖出

思路:遍历数组,求出每相邻的俩个价格差

代码:

 int maxProfit(vector& prices) {
        int pro=0;
        for(int i=1;i


3  只能交易俩次。求最大的利润

思路:

代码

 int maxProfit(vector& prices) {
        int b1=INT_MIN;
        int b2=INT_MIN;
        int s1=0,s2=0;
        for(int i : prices){
            s2=max(s2,b2+i);  //第二次出售获利
            b2=max(b2,s1-i);  //第二次买入
            s1=max(s1,b1+i);  //第一次出售
            b1=max(b1,-i);
        }
        return s2;
    }



你可能感兴趣的:(C++,leetcode,算法)