NowCoder
题目描述
假设把某股票的价格按照时间先后顺序存储在数组中,请问购买该股票一次可能获得的最大利润是多少?
解题思路
求最大利润差diff(i)时,就要求i-1个数中的最小值。注意:数字倒序排列时,最大收益为0。
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.size()<2) return 0;
int minP = prices[0], len = prices.size(), maxDiff = 0;
for(int i=1; i<len; ++i) {
minP = min(minP, prices[i-1]);
maxDiff = max(maxDiff, prices[i]-minP);
}
return maxDiff;
}
};