请写Java代码。【题目描述】股票交易游戏:给出一个数组,代表某只股票每天的收市价,按时间顺序依次排列。我们选取前面的一天的收市价作为买入价,然后选取买入之后某天的收市价作为卖出价,卖出价减去买入价即为你的得分(股票收益)请你设计一个程序,在这个股票游戏中只进行一次买卖(一次买入+一次卖出),使得获得的收益最大【输入格式】:从键盘输入一个正整数n,表示数组的长度接下来一行输入n个整数,以空格隔开,请将这n个数保存到一个长度为n的数组中【输出格式】:输出一个整数,表示在这个股票交易游戏中获得的最大收益
时间: 2024-03-17 20:44:14 浏览: 516
好的,以下是Java代码实现:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] prices = new int[n];
for (int i = 0; i < n; i++) {
prices[i] = input.nextInt();
}
int maxProfit = 0;
int minPrice = Integer.MAX_VALUE;
for (int i = 0; i < n; i++) {
if (prices[i] < minPrice) {
minPrice = prices[i];
} else if (prices[i] - minPrice > maxProfit) {
maxProfit = prices[i] - minPrice;
}
}
System.out.println(maxProfit);
}
}
```
代码思路:
首先输入一个正整数 n,表示数组的长度,然后输入 n 个整数,保存到一个长度为 n 的数组中。
接下来循环遍历数组,找到最小的买入价,并计算出在卖出价为当前价格时的最大收益。最后输出最大收益即可。
时间复杂度为 O(n),空间复杂度为 O(1)。
阅读全文