题目

首先用HashMap
代码
import java.util.HashMap;
class Solution {
public static void main(String[] args) {
int[] a={3,3,4};
System.out.println(new Solution().majorityElement(a));
}
public int majorityElement(int[] nums) {
HashMap<Integer,Integer> hashMap=new HashMap<>();
int mid=0;
int result=0;
for (int i=0;i<nums.length;i++){
if (!hashMap.containsKey(nums[i])){
hashMap.put(nums[i],1);
}else {
mid=hashMap.get(nums[i]);
hashMap.put(nums[i],mid+1);
}
result=nums[i];
if (mid>=nums.length/2)break;
}
return result;
}
}
时间复杂度和空间复杂度都为O(n)
改进,由于出现次数大于等于数组一半长度,因此排序后返回中间位置的数即可。另外还有一些其他算法。
本文介绍了一种使用HashMap解决多数元素问题的算法,并提出了通过排序中间元素的改进方案。该算法适用于寻找数组中出现次数超过一半的元素,展示了两种实现方式及其时间与空间复杂度。
986

被折叠的 条评论
为什么被折叠?



