
方法一:暴力破解
public int maxProfit(int[] prices) {
int result = Integer.MIN_VALUE;
for (int i = 0; i < prices.length; i++){
for (int j = i+1; j < prices.length; j++){
if (prices[j] >= prices[i]){
result = Math.max(result,(prices[j] - prices[i]));
}
}
}
return result > 0 ? result : 0;
}
方法二:动态规划
思想:找到最低的价格买进,然后找到最高的价格卖出。
如何找到最低价?用min保存最低价,只要每一天的价格和min比较一下即可
如果找到最高价?用result保存最后的结果,那么只需要MAX(result,当天价格 - min)
public static int maxProfit(int[] prices) {
int length = prices.length;
if (length == 0){
return 0;
}
int min = prices[0],result = 0;
for (int i = 1; i < length; i++){
result = Math.max(result,prices[i] - min);
min = Math.min(prices[i],min);
}
return result > 0 ? result : 0;
}

697

被折叠的 条评论
为什么被折叠?



