求n个整数中的第二大数。如果n个整数均等于同一个数,则直接输出这个数。本题不允许使用排序算法完成。 输入描述 输入第1行:正整数n,代表整数的个数; 输入第2行:n个整数,彼此用一个空格隔开。 输出描述 输出第1行:n个整数中的第二大数。用Java写
时间: 2024-12-16 07:16:55 浏览: 3
C++通过自定义函数找出一个整数数组中第二大数的方法
5星 · 资源好评率100%
求n个整数中的第二大数的一种非排序解决方案是在程序中遍历一次数组,同时维护两个变量`maxNum`和`secondMax`。开始时,假设第一个元素既是最大值也是第二大的值。然后依次遍历数组,对于每个元素:
1. 如果当前元素大于`maxNum`,则将`maxNum`更新为当前元素,并将`secondMax`设置为原来的`maxNum`。
2. 否则,如果当前元素大于`secondMax`但小于`maxNum`,则更新`secondMax`为当前元素。
遍历完成后,`secondMax`存储的就是第二大的数。以下是简单的Java代码实现:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = scanner.nextInt();
}
if (n == 1 || nums[0] != nums[1]) {
int secondMax = nums[0];
for (int num : nums) {
if (num > secondMax) {
secondMax = num;
}
}
System.out.println(secondMax);
} else {
// 如果所有数字都相等,直接输出
System.out.println(nums[0]);
}
scanner.close();
}
}
```
阅读全文