输入一个大小为10的数组,返回其中的多数元素。 多数元素:数组中出现次数大于(n/2)的元素 输入 4 5 6 7 4 8 4 4 5 6 输出 4 输入样例 1 8 9 1 9 25 4 7 0 1 9 输出样例 1 9 用java语言编写,内容为Main
时间: 2024-12-14 14:28:46 浏览: 8
在Java中,你可以使用哈希表(HashMap)或者快速选择算法(QuickSelect)来解决这个问题。这里提供一种简单的方法,使用HashMap统计每个元素出现的次数,然后找出出现次数超过一半的元素。以下是使用HashMap的一个示例代码:
```java
import java.util.HashMap;
import java.util.Map;
public class MajorityElement {
public static int majorityElement(int[] nums) {
if (nums == null || nums.length == 0) {
return -1; // 如果数组为空或长度为0,返回-1表示无解
}
Map<Integer, Integer> countMap = new HashMap<>();
for (int num : nums) {
countMap.put(num, countMap.getOrDefault(num, 0) + 1);
}
int candidate = null;
int maxCount = 0;
for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) {
if (entry.getValue() > maxCount) {
candidate = entry.getKey();
maxCount = entry.getValue();
}
}
// 检查候选元素是否确实是最多数
int majority = countMap.get(candidate);
if (majority * 2 > nums.length) {
return candidate;
} else {
return -1; // 如果没有找到满足条件的多数元素,返回-1
}
}
public static void main(String[] args) {
int[] input1 = {4, 5, 6, 7, 4, 8, 4, 4, 5, 6};
System.out.println(majorityElement(input1)); // 输出: 4
int[] input2 = {8, 9, 1, 9, 25, 4, 7, 0, 1, 9};
System.out.println(majorityElement(input2)); // 输出: 9
}
}
```
这个`majorityElement`函数首先检查数组是否为空,然后遍历数组统计每个元素出现的次数。接着找到出现次数最多的元素作为候选者,并检查它是否真的出现了超过一半的次数。如果找到了,则返回该元素;如果没有找到,则说明不存在多数元素,返回-1。
阅读全文