- 第一种方法,暴力破解,两层遍历,不过耗时很长
int maxProfit(int* prices, int pricesSize){
int max = 0;
for(int i=0; i<pricesSize-1; i++){
for(int j=i+1; j<pricesSize; j++){
int profit = prices[j]-prices[i];
if(profit > max){
max = profit;
}
}
}
return max;
}
- 第二种方法,只用一层遍历,耗时短了很多,只需维持两个变量,一个是最小值,一个是最大利润
int maxProfit(int* prices, int pricesSize){
if(pricesSize==0)
return 0;
int max=0, min=prices[0];
for(int i=1; i<pricesSize; i++){
if((prices[i]-min) > max){
max = prices[i]-min;
}
if(prices[i] < min){
min = prices[i];
}
}
return max;
}