int maxProfit(int* prices, int pricesLen ) { // write code here int max=0,a=10000,pri=0; //pri记录当前天数卖出时的盈利 max记录最高盈利 a用于存取最低买入价 for(int i=0;i<pricesLen;i++){ if(prices[i]<a) a=prices[i]; //当前价格低于a时,令a=最低买入价 if(prices[i]>a) pri=prices[i]-a; //当前价格高于a时,pri=当天卖出可得盈利 if(pri>max) max=pri; //如果本日卖出盈利>最高盈利,则更新最高盈利 } //根据例子,8 9可以算出9卖出盈利一块,这个时候如果后面递增,则每次都按8买入算。如果后面出现低价,则考虑按这个价格买入的情况下,后续哪个会盈利,因为后续如果出现高价,那么高-当前最低一定大于-之前的最低。如果一路下跌,max就不会更新。 return max; } 一步到位