Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊
n/2 ⌋ times.
You may assume that the array is non-empty and the majority element always exist in the array.
思路:发帖水王问题。 用一个变量继续majority元素,并且记录其个数,在遍历结束之后,其个数大于等于0
class Solution {
public:
int majorityElement(vector<int> &num) {
const int n = num.size();
//检查最后一个元素
int maj = num[n-1];
int cnt = 1;
for (int i = 0; i < n-1; i++) {
if (maj == num[i]) {
cnt++;
}
}
if (cnt >= (n+1)/2) {
return maj;
}
maj = num[0];
cnt = 1;
for (int i = 1; i < n; i++) {
if (cnt == 0) {
maj = num[i];
cnt = 1;
} else {
if (maj != num[i]) {
cnt--;
} else {
cnt++;
}
}
}
return maj;
}
};
本文介绍了一种寻找数组中多数元素的算法实现。多数元素是指在数组中出现次数超过数组长度一半的元素。文章通过示例代码详细展示了如何利用计数方式找到这个元素。
525

被折叠的 条评论
为什么被折叠?



