public class Solution {
public List<Integer> majorityElement(int[] nums) {
int can1 = 0, can2 = 0, num1 = 0, num2 = 0;
for (int num : nums) {
if (num1 == 0 || can1 == num) {
can1 = num;
num1 ++;
} else if (num2 == 0 || can2 == num) {
can2 = num;
num2 ++;
} else {
num1 --;
num2 --;
}
}
num1 = 0;
num2 = 0;
for (int num : nums) {
if (num == can1) {
num1 ++;
} else if (num == can2) {
num2 ++;
}
}
List<Integer> result = new ArrayList<Integer>();
if (num1 > nums.length / 3) {
result.add(can1);
}
if (num2 > nums.length / 3) {
result.add(can2);
}
return result;
}
}