在一个 C++ 排序数组中检查多数元素


假设我们有一个数组;我们必须检查给定的数字 x 是否为该数组的多数元素。该数组是已排序的。当一个元素在数组中出现 n/2 次时,它被称为多数元素。假设一个数组如下所示:{1, 2, 3, 3, 3, 3, 6},x = 3,这里答案为 true,因为 3 是数组的多数元素。有四个 3。数组的大小是 7,所以我们可以看到 4 > 7/2。

我们可以计算 x 在数组中出现的次数,如果该数字大于 n/2,那么答案将为 true,否则为 false。

例如

 现场演示

#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";
}

输出

3 is the majority element of the array

更新于:21-10-2019

148 次浏览

职业起步

通过完成课程获得认证

开始
广告