SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

先贴个丑代码:这个代码避开了重复交易的陷阱,但是依然很丑:

int res=0;
        int len=prices.size();
        if(len<2) return res;
        for(int i=0;i<len-1;i++){
            int a=0,b=0;
            if(prices[i+1]-prices[i]>=0){
                a=i;
                int j=0;
                while(i+j<len-1){
                    if(prices[i+j+1]-prices[i+j]<=0){
                        b=i+j;break;
                    }else if(i+j+1==len-1){
                        b=i+j+1;
                    }
                    j++;
                }
                i+=j;
                if(prices[b]-prices[a]>0) res+=prices[b]-prices[a];
                //cout<<"a "<<a<<"b "<<b<<endl;
            }
        }
        return res;

 

贪心算法:如果今天买明天能够盈利,那就今天买入明天卖出;对于这个问题来讲是具有最优子结构性质的

分情况:

1)当len<1;不会赚钱,return 0;

2)

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        //贪心算法
        int res=0;
        int len=prices.size();
        if(len<1) return 0;
        for(int i=1;i<len;i++){
            if(prices[i]-prices[i-1]>0)
                res+=prices[i]-prices[i-1];
        }
        return res;
    }
};

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄