publicint(int[] nums){ int count = 1; int major = nums[0]; for (int i = 1; i < nums.length; ++i) { if (count == 0) { major = nums[i]; } if (major == nums[i]) count++; else count--; } return major; }
publicintmajorityNumber(ArrayList<Integer> nums, int k){ HashMap<Integer, Integer> map = new HashMap<>(); for (int i : nums) { if (map.containsKey(i)) { map.put(i, map.get(i) + 1); } else map.put(i, 1);
if (map.size() >= k) remove(map); } for (int i : map.keySet()) { map.put(i, 0); } for (int i : nums) { if (map.containsKey(i)) map.put(i, map.get(i) + 1); } int max = 0, ans = 0; for (int i : map.keySet()) { if (max < map.get(i)) { ans = i; max = map.get(i); } } return ans; }
publicvoidremove(HashMap<Integer, Integer> map){ Set<Integer> set = map.keySet(); HashSet<Integer> delete = new HashSet<>(); for (int i : set) { map.put(i, map.get(i) - 1); if (map.get(i) == 0) delete.add(i); } for (int i : delete) { map.remove(i); } }
近期评论