LeetCode 数组 :买卖股票的最佳时机

 在开始的时候一直提醒reference binding to null pointer of type 'value_type'  的错误,是说在输入空数组的时候,算法死掉了,于是加入了判空条件,遂执行通过,我的思路是在第一个for循环中首先获取数组中除最后一个数以外len-1个数里面前i+1个数里的最小值,因为是要获取从第二天开始每天减去之前每天的价格的最大利润,所以先将之前每个i天之前的最小价格获取,然后在第二个for循环里面直接减去这些最小的价格得到一组利润,从这些利润中获取的最大值就是想要的结果,

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        
    if(prices.empty())
            return 0;
     else
     {
        auto len=prices.size();
        vector<int> vec;
        int index=1;
        int profit=0;
        int tmpmin=prices[0];
        int tmpmax=0;
       
       
        for(size_t i=0;i<len-1;i++)  //首先获取数组中前len-1个数里面每次前i+1个数中的最小值
        {
           if(prices[i]<tmpmin)
           {
               tmpmin=prices[i];             
           }
            vec.emplace_back(tmpmin);
        }
        for(size_t i=0;i<len-1;i++)
        {
            
            if(vec[i]<prices[index])
            {
                profit=prices[index]-vec[i];
                if(profit>tmpmax)
                    tmpmax=profit;
            }
           
            index++;   
        }
        return tmpmax;
        }
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值