解题思路:定义一个low记录prices值最低的位置,Max记录最大的利润,遍历数组如果比low位置的值更低,则更新low的位置,否则则更新Max为Max和距离最低价格位置的差的最大值,需要注意的是当数组只有一个值时应分开讨论
代码:
class Solution {
public:
int maxProfit(vector<int>& prices) {
//如果prices只有一个数据则返回0
if(prices.size()==1){
return 0;
}
//low记录price最低的下标值,Max记录赚的最大的值
int low=0,Max=prices[1]-prices[0];
for(int i=1;i<prices.size();i++){
if(prices[i]<prices[low]){
low=i;
}
else{
Max= max(Max,(prices[i]-prices[low]));
}
}
return Max;
}
};