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

要素が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

  1. 特定の配列が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

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