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

C++でシャッフルされたコピーである別の配列で欠落している番号を見つけます


2つの配列AとBがあり、配列Aにn個の要素があるとします。 2番目の配列BにはAのすべての要素が含まれていますが、それらはシャッフルされ、1つの要素が削除されています。不足している要素を見つける必要があります。したがって、A =[4、8、1、3、7]、およびB =[7、4、3、1]の場合、出力は8になります。

これは、XORトリックを使用して解決できます。各要素の組み合わせの出現は2回、1つはAで、もう1つはBで発生します。ただし、1つの要素はAで1回しか出現しません。xXORx =0であることがわかっているので、両方の要素でXORを実行すると配列。結果には番号がありません。

#include<iostream>
using namespace std;
int FindMissingElement(int A[], int B[], int n) {
   int min_element = 0;
   for (int i = 0; i < n; i++)
   min_element = min_element ^ A[i];
   for (int i = 0; i < n - 1; i++)
   min_element = min_element ^ B[i];
   return min_element;
}
int main() {
   int A[] = {4, 8, 1, 3, 7};
   int B[] = {7, 4, 3, 1};
   int n = sizeof(A) / sizeof(A[0]);
   cout << "Missing element: " << FindMissingElement(A, B, n);
}

出力

Missing element: 8

  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. C++でab=cdを満たす配列内のすべてのペア(a、b)と(c、d)を検索します

    配列Aがあるとすると、その配列から、ab =cdとなるように2つのペア(a、b)と(c、d)を選択する必要があります。配列A=[3、4、7、1、2、9、8]とします。出力ペアは(4、2)と(1、8)です。これを解決するには、次の手順に従います- i:=0からn-1の場合、do for j:=i + 1 to n-1、do get product =arr [i] * arr [j] 製品がハッシュテーブルに存在しない場合、Hash [product]:=(i、j) 製品がハッシュテーブルに存在する場合は、前の要素と現在の要素を出力します。 例 #include <