该题的意思是:可以选择在某个时间段选择买入股票,然后某个时间段卖出,或者选择不卖。在这里只有这两种情况,不存在说买了不卖的情况,不然这个题目就没意义了。解题的思路很简单:遍历每个元素,也就是以该元素为买入值,然后寻找这个元素后面的最大值,和这个买入值比较做差值,输出这些差值中的最大值,代码如下:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int size=prices.size();
int maxprofit=0;
for(int i=0;i<size;i++)
{
int max=Max(prices,i);
if(max>prices[i])
{
if(maxprofit<max-prices[i])
maxprofit=max-prices[i];
}
}
return maxprofit;
}
int Max(vector<int>v,int n)
{
int max=v[n];
for(int i=n;i<v.size();i++)
if(max<v[i])
max=v[i];
return max;
}
};