Majority Element II LeetCode solution in Java
1class Solution {2public List<Integer> majorityElement(int[] nums) {3int val1 = nums[0], val2 = nums[0], cnt1 = 1, cnt2 = 0;4for (int i = 1; i < nums.length; i++) {5if (val1 == nums[i]) {6cnt1++;7} else if (val2 == nums[i]) {8cnt2++;9} else {10if (cnt1 == 0) {11val1 = nums[i];12cnt1++;13} else if (cnt2 == 0) {14val2 = nums[i];15cnt2++;16} else {17cnt1--;18cnt2--;19}20}21}22int check1 = 0, check2 = 0;23for (int i = 0; i < nums.length; i++) {24if (val1 == nums[i]) check1++;25else if (val2 == nums[i]) check2++;26}27List<Integer> ans = new ArrayList<>();28if (check1 > nums.length / 3) ans.add(val1);29if (check2 > nums.length / 3) ans.add(val2);30return ans;31}32}