有序数组求所有众数c++
时间: 2024-01-05 16:43:30 浏览: 195
zhongshu.rar_众数
假设给定的有序数组为 nums,且长度为 n。我们可以使用两个指针 i 和 j,其中 i 是当前处理的位置,j 是下一个不同的位置。当 nums[i] 和 nums[j] 不相等时,nums[i] 就是一个众数,并且它的出现次数为 j-i。然后将 i 设置为 j,继续处理下一个位置。
以下是 C++ 代码实现:
```c++
vector<int> majorityElement(vector<int>& nums) {
vector<int> res;
int n = nums.size();
int i = 0;
while (i < n) {
int j = i + 1;
// 找到下一个不同的位置
while (j < n && nums[j] == nums[i]) {
j++;
}
// 如果该数字出现次数超过 n/3,则加入结果集
if (j - i > n / 3) {
res.push_back(nums[i]);
}
i = j;
}
return res;
}
```
阅读全文