C++の他の配列要素とは異なる頻度の要素を検索します
N個の数値の配列があり、配列内の各要素が1つの要素を除いて同じ回数(m回、これも指定されています)表示されるとします。この要素を見つける必要があります。
したがって、入力がA =[6、2、7、2、2、6、6]、m =3の場合、出力は7になります。
これを解決するには、次の手順に従います-
-
INT_SIZE:=8*整数型変数のサイズ
-
サイズ-INT_SIZEの配列カウントを定義します。そして0で埋める
-
初期化i:=0の場合、i
-
初期化j:=0の場合、j <サイズの場合、更新(jを1増やします)、実行-
-
(arr [j] AND 2 ^ i)が0に等しくない場合、-
-
count [i]:=count [i] + 1
-
-
res:=0
-
-
初期化i:=0の場合、i
-
res:=res +((count [i] mod m)* 2 ^ i)
-
-
解像度を返す
-
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; int selectUnique(unsigned int arr[], int size, int m){ int INT_SIZE = 8 * sizeof(unsigned int); int count[INT_SIZE]; memset(count, 0, sizeof(count)); for(int i = 0; i < INT_SIZE; i++) for(int j = 0; j < size; j++) if((arr[j] & (1 << i)) != 0) count[i] += 1; unsigned res = 0; for(int i = 0; i < INT_SIZE; i++) res += (count[i] % m) * (1 << i); return res; } main(){ unsigned int arr[] = { 6, 2, 5, 2, 2, 6, 6 }; int size = sizeof(arr) / sizeof(arr[0]); int m = 3; cout << selectUnique(arr, size, m); }
入力
{ 6, 2, 5, 2, 2, 6, 6 }
出力
5
-
C ++を使用して、配列内の数値の頻度を見つけます。
配列があるとします。 n個の異なる要素があります。配列内の1つの要素の頻度を確認する必要があります。 A =[5、12、26、5、3、4、15、5、8、4]とすると、5の頻度を見つけようとすると、3になります。 これを解決するために、左から配列をスキャンします。要素が指定された数と同じである場合は、カウンターを増やします。それ以外の場合は、配列がなくなるまで次の要素に進みます。 例 #include<iostream> using namespace std; int countElementInArr(int arr[], int n, int e) { &nbs
-
配列を分割する方法でk番目に小さい要素を見つけるC++プログラム
配列を分割する方法でk番目に小さい要素を見つけるC++プログラムを開発します。 アルゴリズム Begin Function CreatePartition() has an array a, and the lower l and upper limit h as arguments in := l and pi := h for i in range l to h, do if a[i] < a[pi], then