Leetcode之Majortity Element II
题目: Given an integer array of size n , find all elements that appear more than ⌊ n/3 ⌋ times. Note: The algorithm should run in linear time and in O(1) space. Example 1: Input: [3,2,3] Output: [3] Example 2: Input: [1,1,1,3,3,2,2,2] Output: [1,2] 代码: class Solution { public: vector<int> majorityElement(vector<int>& nums) { vector<int> res; int a = 0, b = 0, cnt1 = 0, cnt2 = 0, n = nums.size(); for (int num : nums) { if (num == a) ++cnt1; else if (num == b) ++cnt2; else if (cnt1 == 0) { a = num; cnt1 = 1; } else if (cnt2 == 0) { b = num; cnt2 = 1; } else { --cnt1; --cnt2; } } cnt1 = cnt2 = 0;