Majority Element II

mac2022-06-30  30

Description:

Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space.

Solution:

class Solution { public: vector<int> majorityElement(vector<int>& nums) { vector<int> rc; if (nums.empty()) return rc; int a, b; int cnt1 = 0, cnt2 = 0; auto sz = (int)nums.size(); for (int i = 0; i < sz; ++i) { int cur = nums[i]; if (cnt1 == 0 || cur == a) { ++cnt1; a = cur; } else if (cnt2 == 0 || cur == b) { ++cnt2; b = cur; } else { --cnt1; --cnt2; } } cnt1 = 0; cnt2 = 0; for (auto n : nums) { if (n == a) ++cnt1; else if (n == b) ++cnt2; } if (cnt1 > sz / 3) rc.push_back(a); if (cnt2 > sz / 3) rc.push_back(b); return rc; } };

转载于:https://www.cnblogs.com/deofly/p/majority-element-ii.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)