剑指 Offer 63. 股票的最大利润
题目描述
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?
https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/
解题思路
记录历史最低点,在最低价买进,在最高价卖出,按照星期的顺序,一定是先买在卖
public int maxProfit(int[] prices) {
int minProfile = Integer.MAX_VALUE;
int maxProfile = 0;
for(int i = 0; i < prices.length; i++){
if(prices[i] < minProfile){
minProfile = prices[i];
}else{
if(prices[i] - minProfile > maxProfile){
maxProfile = prices[i] - minProfile;
}
}
}
return maxProfile;
}
简化,都是求解最大值,最小值
public int maxProfit(int[] prices) {
int minProfile = Integer.MAX_VALUE;
int maxProfile = 0;
for(int i = 0; i < prices.length; i++){
minProfile = Math.min(minProfile,prices[i]);
maxProfile = Math.max(maxProfile,prices[i] - minProfile);
}
return maxProfile;
}
暴力求解,定义最大利润的结果变量,每次比较最大利润
public int maxProfit(int[] prices){
int maxProfit = 0;
for(int i = 0; i < prices.length - 1; i++){
for(int j = i + 1; j < prices.length; j++){
maxProfit = Math.max(maxProfit,prices[j] - prices[i]);
}
}
return maxProfit;
}