1、由于规定超过半数,则排序后最中间的位置(奇数)、左右(偶数)必定为众数。恰好,除法向下取整。
class Solution {
public:
int majorityElement(vector<int>& nums) {
sort(nums.begin(), nums.end());
return nums[nums.size() / 2];
}
};
2、时间复杂度更低的办法有很多,如:众数记为1,非众数记为-1,和一定为正数,则
class Solution {
public:
int majorityElement(vector<int>& nums) {
int res = 0, cnt = 0;
for (int num : nums) {
if (cnt == 0) {
res = num; ++cnt;
}
else
(num == res) ? ++cnt : --cnt;
}
return res;
}
};