整数数组是否存在出现次数超过一半的元素,先对a中元素进行递增排序,再求出现次数最多的次数magnum,最后判断其是否符合条件
时间: 2024-03-17 19:44:43 浏览: 89
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
5星 · 资源好评率100%
这种方法的时间复杂度为O(nlogn),因为需要对数组进行排序。但是在求出现次数最多的元素时可以使用HashMap来优化,时间复杂度可以降到O(n)。下面是Java代码实现:
```java
public int majorityElement(int[] nums) {
Arrays.sort(nums);
int magnum = 1, count = 1, candidate = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] == nums[i - 1]) {
count++;
} else {
if (count > magnum) {
magnum = count;
candidate = nums[i - 1];
}
count = 1;
}
}
if (count > magnum) {
magnum = count;
candidate = nums[nums.length - 1];
}
return magnum > nums.length / 2 ? candidate : -1;
}
```
其中,-1表示不存在超过一半的元素。
阅读全文