C++ 中的多数元素
假设我们有一个数组,我们必须检查给定的数字 x 是否是该数组的多数元素。该数组是已排序的。当一个元素在数组中出现 n/2 次时,它被称为多数元素。比方说数组像 {1, 2, 3, 3, 3, 3, 6},x = 3,答案为真,因为 3 是数组的多数元素。有 4个 3。数组的大小是 7,所以我们可以看到 4 > 7/2。
我们可以统计数组中 x 的出现次数,如果该数字大于 n/2,则答案为真,否则为假。
示例 (C++)
#include <iostream> #include <stack> using namespace std; bool isMajorityElement(int arr[], int n, int x){ int freq = 0; for(int i = 0; i<n; i++){ if(arr[i] == x ) freq++; if(arr[i] > x) break; } return (freq > n/2); } int main() { int arr[] = {1, 2, 3, 3, 3, 3, 6}; int n = sizeof(arr)/sizeof(arr[0]); int x = 3; if (isMajorityElement(arr, n, x)) cout << x << " is the majority element of the array"; else cout << x << " is not the majority element of the array"; }
输入
[1, 2, 3, 3, 3, 3, 6] 3
输出
3 is the majority element of the array
广告