买卖股票的最佳时机
题目
解题思路如下
int maxProfit(int* prices, int pricesSize){
int minprice, maxprofit = 0;
int i = 0;
if(pricesSize > 0 ) {
minprice = prices[i];
}
for(i = 0; i < pricesSize; i++) {
if(prices[i] < minprice) {
minprice = prices[i];
}
if(prices[i] - minprice > maxpro) {
maxprofit = prices[i] - minprice;
}
}
return maxprofit;
}
如图,就是BC之差加上DE之差
首先找极小值,然后找到相邻的极大值,然后在找下一个极小值,然后找相邻的极大值
int maxProfit(int* prices, int pricesSize){
int maxpro = 0;
int i = 0;
while (i < pricesSize - 1) {
//极小值
while (i < pricesSize - 1 && prices[i] >= prices[i + 1]) {
i++;
}
minprice = prices[i];
//极大值
while (i < pricesSize - 1 && prices[i] <= prices[i + 1]) {
i++;
}
maxpro += (prices[i] - minprice);
}
return maxpro;
}