C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++の配列で最も頻繁に使用される要素


配列が与えられ、そこから最も頻繁な要素を見つける必要があります。例を見てみましょう。

入力

arr = [1, 2, 3, 3, 2, 2, 1, 1, 2, 3, 4]

出力

2

上記の配列では、2が4回発生します。これは、配列内の他のどの配列よりも頻繁に発生します。

アルゴリズム-1

  • アレイを初期化します。

  • マップを初期化して、各要素の頻度を保存します。

  • 各要素の頻度を数え、マップに保存します。

  • マップを繰り返し処理して、最も頻度の高い要素を見つけます。

  • 要素を返します。

アルゴリズム-2

  • アレイを初期化します。
  • 指定された配列を並べ替えます。
  • 最大数、結果、現在の要素数の変数を維持します。
  • 配列を反復処理して、最大カウント要素を見つけます。
  • 同じ要素が並んでいます。
  • 結果を返します。

実装

以下は、C++での上記のアルゴリズムの実装です

#include <bits/stdc++.h>
using namespace std;
int getMostFrequentNumber(int arr[], int n) {
   unordered_map<int, int> elements;
   for (int i = 0; i < n; i++) {
      elements[arr[i]]++;
   }
   int maxCount = 0, res = -1;
   for (auto i : elements) {
      if (maxCount < i.second) {
         res = i.first;
         maxCount = i.second;
      }
   }
   return res;
}
int main() {
   int arr[] = { 1, 2, 3, 3, 2, 2, 1, 1, 2, 3, 4 };
   int n = 11;
   cout << getMostFrequentNumber(arr, n) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

2

  1. C++の配列内の各要素のSurpasserCountを検索します

    1つの配列Aが与えられたと仮定します。その配列内の各要素の超過者の数を見つける必要があります。超過者は、現在の要素の配列の右側に存在するより大きな要素です。 A ={2、7、5、3、0、8、1}とすると、超過者は{4、1、1、1、2、0、0}であるため、2の右側には4つの数字があります。 4よりも多く、他の人にも同じルールがあります。解決策は非常に単純で、2つのネストされたループがあり、要素ごとに、超過者をカウントして、別の配列に格納します。 例 #include <iostream> using namespace std; void gerSurpassers(int arr[

  2. C++STLの配列アルゴリズム

    C ++ 11以降、STLにはさまざまな関数が追加されています。これらの関数は、アルゴリズムヘッダーファイルにあります。ここでは、これのいくつかの機能を見ていきます。 all_of()関数は、コンテナのすべての要素に当てはまる1つの条件をチェックするために使用されます。アイデアを得るためのコードを見てみましょう 例 #include <iostream> #include <algorithm> using namespace std; main() {    int arr[] = {2, 4, 6, 8, 10};   &nb