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

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

  1. 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

  2. 配列を分割する方法で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