假设股价是涨的,你已经知道今天之前某一天的股价最低

  • 那你要买肯定就是在股价最低那天买进,今天抛出。

  • 即得到当前所谓的"利润"(不包含未来更高价格)

  • 那么如果整个未来的价格已经给你了,其实我们要计算的也就是:每一天的利润值

  • 作比较即得到所有中的利润中的最大利润及所求数 alt

  • 第一天:最小值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;
}