多数元素
hashmap 一开始想用数组下标,思考不周,没想到数组内有负数, class Solution { public int majorityElement(int[] nums) { int n=nums.length; HashMap<Integer,Integer> aa=new HashMap<>(); for(int i=0;i<n;i++){ int count = aa.getOrDefault(nums[i], 0); aa.put(nums[i], count + 1);//hashmap的思想,更改value if(aa.get(nums[i])>n/2) return nums[i]; } return 0; } } en 排序 class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[(nums.length-1)/2]; } } 分治 思路 如果数 a 是数组 nums 的众数,如果我们将 nums 分成两部分,那么 a 必定是至少一部分的众数。 我们可以使用反证法来证明这个结论。假设 a 既不是左半部分的众数,也不是右半部分的众数,那么 a 出现的次数少于 l / 2 + r / 2 次,其中 l 和 r 分别是左半部分和右半部分的长度