假设马匹每天的价格记录在给定的数组中,而乔致庸只有一次卖出马匹的机会,即一次买入和一次卖出,使用Java语言,完成程序,告诉乔致庸哪天买入,哪天卖出才能赚钱最多,具体赚多少
时间: 2023-12-13 08:02:57 浏览: 120
好的,这是一个经典的股票买卖问题。以下是一种Java语言实现的解决方案:
```java
public class MaxProfit {
public static void main(String[] args) {
int[] prices = {7, 1, 5, 3, 6, 4};
int maxProfit = maxProfit(prices);
System.out.println("最大利润为:" + maxProfit);
}
public static int maxProfit(int[] prices) {
if (prices == null || prices.length == 0) {
return 0;
}
int minPrice = prices[0];
int maxProfit = 0;
for (int i = 1; i < prices.length; i++) {
if (prices[i] < minPrice) {
minPrice = prices[i];
} else {
maxProfit = Math.max(maxProfit, prices[i] - minPrice);
}
}
return maxProfit;
}
}
```
上述代码中,我们首先定义了一个 `maxProfit` 方法,该方法接收一个整数数组 `prices` 作为输入,返回一个整数表示最大利润。我们在方法中先判断输入数组是否为空或长度为0,如果是则直接返回0。
接着,我们定义两个变量 `minPrice` 和 `maxProfit`,分别表示当前的最低价格和最大利润,然后遍历整个数组,对于每个价格,如果它小于当前最低价格,则将 `minPrice` 更新为该价格;否则,将当前价格与最低价格的差与当前最大利润比较,如果大于当前最大利润,则将 `maxProfit` 更新为该值。
最后,将计算得到的最大利润返回即可。在上面的示例中,输入的数组为 `{7, 1, 5, 3, 6, 4}`,输出的最大利润为 `5`,表示在第二天买入(价格为1),第五天卖出(价格为6)可以获得最大利润为5。
阅读全文