https://leetcode.com/problems/majority-element-ii/?tab=Description
找出数组中出现次数大于⌊ n/3 ⌋的数
满足条件的数可能为0、1、2个,记录这可能的两个数的值,然后查这两个数在数组里面出现的次数是否满足要求
public class Solution { public List<Integer> majorityElement(int[] nums) { List<Integer> res = new LinkedList(); int c1 = 0; int c2 = 0; int n1 = 0; int n2 = 0; for (int n : nums) { if (n == n1) { c1++; } else if (n == n2) { c2++; } else if (c1 == 0) { c1 = 1; n1 = n; } else if (c2 == 0) { c2 = 1; n2 = n; } else { c1--; c2--; } } c1 = 0; c2 = 0; for (int n : nums) { if (n == n1) { c1++; } else if (n == n2) { c2++; } } if (c1 > nums.length / 3) { res.add(n1); } if (c2 > nums.length / 3) { res.add(n2); } return res; } }