与上一题“Best Time to Buy and Sell Stock 2”不同的是,这次的约束条件是只能买一次和卖一次。
方法也挺简单的,从头到尾扫一次,并记录当前最小值和最大利润,如果遇到比最小值小的则更新最小值,否则如果利润(当前所指的数-最小值)大于当前最大利润则更新。
class Solution {
public:
int maxProfit(vector<int> &prices) {
// Note: The Solution object is instantiated only once and is reused by each test case.
if(prices.empty()) return 0;
int max_prf = 0, min_ele = prices[0];
for(int i = 1; i < prices.size(); i++){
if(prices[i] <= min_ele){
min_ele = prices[i];
continue;
}
else if((prices[i]-min_ele) > max_prf)
max_prf = prices[i]-min_ele;
}
return max_prf;
}
};