一.买卖股票的最佳时机
题目:
思考:
- 如果录入的是空数组,则直接返回0
- 运用一层循环,记录最小值,遍历做差
代码:
int maxProfit(int* prices, int pricesSize){
if(pricesSize == 0)
return 0;
int i = 0;
int min = prices[0];
int max = 0;
for(i = 0; i < pricesSize; i++){
max = (prices[i] - min) > max ? prices[i] - min : max;
min = min < prices[i] ? min : prices[i];
}
return max ;
}
买卖股票的最佳时机II
题目:
思考:
- 如果是空数组,则直接返回0
- 注意:要有size- 1,因为只比较该元素和下一元素的大小
- 计算现在元素和下一元素的大小,如果该元素小于下一个元素,则计算差值,最后把差值相加即可,最终就会得到所有的最大差值,不会有遗漏。
代码:
int maxProfit(int* prices, int pricesSize){
if(pricesSize == 0)
return 0;
int i = 0;
int max = 0;
pricesSize -= 1;
for(i = 0; i < pricesSize; i++){
if(prices[i] < prices[i + 1]) {
max += (prices[i + 1] - prices[i]);
}
}
return max ;
}