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