在开始的时候一直提醒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;
}
}
};