目录
给定一个大小为
n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素
示例 1:
输入:nums = [3,2,3] 输出:3
示例 2:
输入:nums = [2,2,1,1,1,2,2] 输出:2
如果将数组 nums 中的所有元素按照单调递增或单调递减的顺序排序,那么下标为
的元素(下标从 0 开始)一定是多数
- class Solution {
- public int majorityElement(int[] nums) {
- Arrays.sort(nums);
- return nums[nums.length / 2];
- }
- }
次,所以可以用哈希表来快速统计每个元素出现的次数。- class Solution {
- private Map
countNums(int[] nums) { - Map
counts = new HashMap(); - for (int num : nums) {
- if (!counts.containsKey(num)) {
- counts.put(num, 1);
- } else {
- counts.put(num, counts.get(num) + 1);
- }
- }
- return counts;
- }
-
- public int majorityElement(int[] nums) {
- Map
counts = countNums(nums); -
- Map.Entry
majorityEntry = null; - for (Map.Entry
entry : counts.entrySet()) { - if (majorityEntry == null || entry.getValue() > majorityEntry.getValue()) {
- majorityEntry = entry;
- }
- }
-
- return majorityEntry.getKey();
- }
- }
复杂度