时间复杂度和遍历次数关联。
空间复杂度和使用变量个数相关联。
股票买卖最佳时间,求最大利润。
prices[i]:遍历过程中的当前价格。
maxProfit:最大利润。初始值为0,一但有比这个值更大的数,则更新它,题干中提示过,若赚不到钱,也就是说买入后没有比这更高的价格,是要返回0的。
minPrice:最低价格,适合买入。初始化为Integer的最大整数,一旦满足price[i]小于minPrice,则更新minPrice。
public int maxProfit(int[] prices){
int minPrice = Integer.MAX_VALUE;
int maxProfit = 0;
for(int i = 0;i<prices.length;i++){
if(prices[i] < minPrice){
minPrice = prices[i];
}else if(prices[i] - maxProfit > maxProfit){
maxProfit = prices[i] - maxProfit;
}
}
return maxProfit;
}
prices[i] - maxProfit > maxProfit
就这一行,做题时所考虑的最大利润为负数,直接不存在了,maxProfit最低也是0。
小小一行代码,却能解决做题时所担忧。