169. 多数元素
统计法
使用 map 统计每个元素的出现次数
时间复杂度:O(n),空间复杂度:O(n)
执行用时:11 ms, 在所有 Java 提交中击败了26.13%的用户 内存消耗:43.8 MB, 在所有 Java 提交中击败了78.06%的用户
class Solution {public int majorityElement(int[] nums) {if (nums.length == 0) return -1;Map<Integer, Integer> map = new HashMap<>();for (int num : nums) {map.put(num, map.getOrDefault(num, 0) + 1);}Map.Entry<Integer, Integer> majorityEntry = null;for (Map.Entry<Integer, Integer> entry : map.entrySet()) {if (majorityEntry == null || majorityEntry.getValue() < entry.getValue())majorityEntry = entry;}return majorityEntry.getKey();}}
排序法
题目说明了众数出现次数大于 n/2 所以排序后下标为 n/2 的元素一定是众数
时间复杂度:O(nlogn),空间复杂度:跟排序算法有关
执行用时:2 ms, 在所有 Java 提交中击败了61.25%的用户 内存消耗:43.9 MB, 在所有 Java 提交中击败了73.21%的用户
class Solution {public int majorityElement(int[] nums) {Arrays.sort(nums);return nums[nums.length / 2];}}
