题意:还是算利润,不过这次只允许卖出一次,求最大利润。
我的思路是边循环边记录最小价格,并记录价格差。
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.size() == 0) return 0;
int min = prices[0],max = 0;
for(int i = 1;i < prices.size();i++){
if(min >= prices[i]){
min = prices[i];
}else{
if(prices[i] - min >= max){
max = prices[i] - min;
}
}
}
return max;
}
};
比如 7,2,11,1,12
一开始,min = 7,max = 0;
i = 1 -> 2 < 7 -> min = 2;
i = 2 -> 11 > 2 , min = 2 -> 11 - 2 = 9 > 0 -> max = 9;
i = 3 -> 1 < 2 , min = 1;
i = 4 -> 12 > 1 , min = 1 -> 12 -1 = 11 > max = 9 -> max = 11;
循环结束,此时最大max = 11。