假设股价是涨的,你已经知道今天之前某一天的股价最低
-
那你要买肯定就是在股价最低那天买进,今天抛出。
-
即得到当前所谓的"利润"(不包含未来更高价格)
-
那么如果整个未来的价格已经给你了,其实我们要计算的也就是:每一天的利润值
-
作比较即得到所有中的利润中的最大利润及所求数
-
第一天:最小值8 利润:8-8=0
-
第二天:最小值8 利润:9-8=1
-
第三天:最小值2 利润:2-2=0
-
第四天:最小值2 利润:4-2=2
-
第五天:最小值2 利润:10-2=8
-
第六天:最小值1 利润:1-1=0
-
......
-
依次递推即可知道:最大利润值即为8
int maxProfit(int* prices, int pricesLen ) {
// write code here
int min=*prices;
int maxProfit=0;
int price=0;//当前股价
for(int k=0;k<pricesLen;k++){
price=prices[k];
min=min<price?min:price;//求出当前股价之前的最低股价(包括自己)
maxProfit=maxProfit<(price-min)?(price-min):maxProfit;//判断最大利润
}
return maxProfit;
}