思路:时间复杂度O(n),从前向后遍历,找到最小的buyPro的同时,计算maxPro
举例:[7,1,5,3,6,4]
i | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
buyPro | 7 | 1 | 1 | 1 | 1 | 1 |
maxPro | 0 | 0 | 4 | 4 | 5 | 5 |
class Solution {
public:
int maxProfit(vector<int>& prices) {
int maxPro=0,numPro=prices.size();
if(numPro==0){
return 0;
}
int buyPro=prices[0];
for(int i=1;i<numPro;i++){
if(prices[i]>buyPro){
maxPro=max(maxPro,prices[i]-buyPro);
}else{
buyPro=prices[i];
}
}
return maxPro;
}
};
时间复杂度:O(n)
空间复杂度:O(1)