要素がC++の範囲に制限されていない場合に、特定の配列で重複を検索します
N個の整数の配列があるとします。ここでは、指定された配列の複製を出力します。そのような重複が存在しない場合は、-1を返します。したがって、配列が[12、15、12、3、6、12、3、48、56、8、48]のような場合、重複は次のようになります:[12、3、48]
ここでは、C++で順序付けされていないマップを使用します。したがって、最初に1つの要素を取得するときに、それがマップに存在するかどうかを確認します。存在する場合は、それを複製として印刷します。それ以外の場合は、マップに追加します。
例
#include<iostream> #include<unordered_map> using namespace std; void displayDuplicates(int arr[], int n) { unordered_map<int, int> occurrence; for (int i=0; i<n; i++) occurrence[arr[i]]++; bool duplicate = false; unordered_map<int, int>:: iterator itr; for (itr=occurrence.begin(); itr!=occurrence.end(); itr++) { if (itr->second > 1) { cout << itr->first << " "; duplicate = true; } } if (duplicate == false) cout << "-1"; } int main() { int arr[] = {12, 15, 12, 3, 6, 12, 3, 48, 56, 8, 48}; int n = sizeof(arr) / sizeof(arr[0]); cout << "Duplicate elements are: "; displayDuplicates(arr, n); }
出力
Duplicate elements are: 12 3 48
-
特定の配列がC++でペアワイズソートされているかどうかを確認します
n個の要素を持つ配列Aがあります。配列がペアごとにソートされているかどうかを確認する必要があります。配列が{8、10、18、20、5、15}のようなものであるとします。これは、(8、10)、(18、20)、(5、15)がソートされるようにペアごとにソートされます。配列に奇数の要素がある場合、最後の要素は無視されます。 アプローチは単純すぎます。Iを0からn-1にすることで、i番目の要素がi + 1番目の要素よりも小さいかどうかを確認し、そうでない場合はfalseを返し、そうでない場合はIを2増やします。 例 #include <iostream> #include <cma
-
C++で指定された配列の要素の階乗のGCDを検索します
N個の要素を持つ配列Aがあるとします。配列のすべての要素の階乗のGCDを見つける必要があります。要素が{3、4、8、6}であるとすると、階乗のGCDは6です。ここでトリックを確認します。 2つの数値のGCDは、両方の数値を除算する最大の数値であるため、2つの数値の階乗のGCDは、最小の数値自体の階乗の値です。だから3の公約数!と5! 3です! =6. 例 #include <iostream> using namespace std; long fact(int n){ if(n <= 1) return