leetcode169. 求眾數
阿新 • • 發佈:2019-01-05
給定一個大小為 n 的陣列,找到其中的眾數。眾數是指在陣列中出現次數大於 ⌊ n/2 ⌋ 的元素。
你可以假設陣列是非空的,並且給定的陣列總是存在眾數。
示例 1:
輸入: [3,2,3]
輸出: 3
示例 2:
輸入: [2,2,1,1,1,2,2]
輸出: 2
public int majorityElement(int[] nums) { if (1 == nums.length) { return nums[0]; } int i; int length = nums.length; Map<Integer, Integer> map = new TreeMap<>(); for (i = 0; i < length; i++) { map.put(nums[i], map.getOrDefault(nums[i], 0) + 1); } List<Map.Entry<Integer,Integer>> list = new ArrayList<>(map.entrySet()); Collections.sort(list,(o1,o2)->(o2.getValue()-o1.getValue())); return list.get(0).getKey(); }
更優秀的方式
class Solution { public int majorityElement(int[] nums) { int length = nums.length; if(length == 1) return nums[0]; int count = 1, maj = nums[0]; for (int i = 1; i < nums.length; i++) { if (count == 0) { maj = nums[i]; } if (maj != nums[i]) { count--; } else { count++; } } return maj; } }
更簡單的方式
public int majorityElement1(int[] nums) {
Arrays.sort(nums);
return nums[nums.length/2];
}