JAVA给定 n 个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
时间: 2024-05-04 17:19:26 浏览: 104
可以使用哈希表来记录每个数出现的次数,然后遍历哈希表找到出现次数最多的数。如果有多个出现次数最多的数,可以使用一个变量来记录最小的数。
具体实现如下:
```java
import java.util.*;
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();
}
Map<Integer, Integer> countMap = new HashMap<>();
for (int num : nums) {
countMap.put(num, countMap.getOrDefault(num, 0) + 1);
}
int maxCount = 0;
int minNum = Integer.MAX_VALUE;
for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) {
int num = entry.getKey();
int count = entry.getValue();
if (count > maxCount) {
maxCount = count;
minNum = num;
} else if (count == maxCount && num < minNum) {
minNum = num;
}
}
System.out.println(minNum);
}
}
```
时间复杂度为 $O(n)$。
阅读全文