/*
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
注意:你不能在买入股票前卖出股票。*/
public class MaxProfit01 {
public static void main(String[] args) {
int [] prices = {2,4,1};
//int max = maxProfit(prices);
int max = maxProfitByViolence(prices);
System.out.println(max);
}
//找到最低谷和最高峰
public static int maxProfit(int [] prices) {
if(prices.length < 2) {
return 0;
}
//在股票价格的最低谷购买,在股票价格的最高的时候卖出
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] - minPrice > maxProfit) {
maxProfit = prices[i] - minPrice;
}
}
return maxProfit;
}
//暴力匹配
public static int maxProfitByViolence(int [] prices) {
int maxProfit = 0;
for(int i = 0; i < prices.length; i ++) {
for (int j = i + 1; j < prices.length; j ++) {
if(prices[i] < prices[j]) {
maxProfit = Math.max(prices[j] - prices[i],maxProfit);
}
}
}
return maxProfit;
}
}
只允许买卖一次的买卖股票的最佳时机解法
最新推荐文章于 2021-07-23 14:52:03 发布