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