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

C++を使用して配列内の一意のペアの数を見つける


C ++の配列構文でいくつかの一意のペアを作成するには、適切な知識が必要です。一意のペアの数を見つける際に、特定の配列内のすべての一意のペアをカウントします。つまり、各ペアが一意である必要がある場所に、すべての可能なペアを形成できます。例-

Input : array[ ] = { 5, 5, 9 }
Output : 4
Explanation : The number of all unique pairs are (5, 5), (5, 9), (9, 5) and (9, 9).

Input : array[ ] = { 5, 4, 3, 2, 2 }
Output : 16

解決策を見つけるためのアプローチ

このソリューションには2つのアプローチがあり、それらは-

ブルートフォースアプローチ

このアプローチでは、可能な各ペアをトラバースし、それらのペアをセットに追加して、最後にセットのサイズを見つけます。このアプローチの時間計算量はO(n2 log n)です。

#include <bits/stdc++.h>
using namespace std;
int main () {
   int arr[] = { 5, 4, 3, 2, 2 };
   int n = sizeof (arr) / sizeof (arr[0]);
   // declaring set to store pairs.
   set < pair < int, int >>set_of_pairs;

   for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
         set_of_pairs.insert (make_pair (arr[i], arr[j]));

   int result = set_of_pairs.size();

   cout <<"Number of unique pairs : " << result;
   return 0;
}

出力

Number of unique pairs : 16

上記のコードの説明

このコードでは、最初にセット変数を宣言し、次に2つのループを使用して、可能な各ペアをトラバースし、iとjを使用して各ペアをセットに挿入します。次に、セットのサイズを計算し、結果を印刷します。

効率的なアプローチ

別のアプローチは、最初に配列内の一意の番号の数を見つけることです。現在、それ自体を含む他のすべての一意の要素は、他の一意の要素とペアを作成する可能性があるため、一意のペアの数は、すべての一意の数の数の2乗に等しくなります。彼のアプローチの時間計算量はO(n)です。

#include <bits/stdc++.h>
using namespace std;

int main () {
   int arr[] = { 5, 4, 3, 2, 2 };
   int n = sizeof (arr) / sizeof (arr[0]);

   // declaring set to store unique elements.

   unordered_set < int >set_of_elements;
   // inserting elements in the set.
   for (int i = 0; i < n; i++)
      set_of_elements.insert (arr[i]);

   int size = set_of_elements.size ();
   // finding number of unique pairs
   int result = size * size;

   cout << "Number of unique pairs in an array: " << result;
   return 0;
}

出力

Number of unique pairs : 16

上記のコードの説明

このコードでは、セットを宣言してから、配列の各要素を調べて、セット内のすべての要素を挿入します。その後、セットのサイズを計算し、式n2の結果を見つけて、出力を出力しました。

結論

この記事では、配列内の一意のペアの数を見つけるという問題を解決します。ここでは、問題を解決するための2つの方法、つまり単純で効率的な方法について説明します。単純なアプローチでは、時間計算量がO(n2 log n)のセットにすべての可能なペアを挿入し、効率的なアプローチでは、すべての一意の数値を見つけて、n2で結果を見つけます。同じプログラムを、C、java、python、その他の言語などの他の言語で作成できます。この記事がお役に立てば幸いです。


  1. C++を使用して文字列の部分文字列の数を見つける

    この記事では、特定の文字列に形成できるサブ文字列(空ではない)の数を見つけるためのアプローチについて学習します。 Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, ‘oo’, ‘on’, ‘moo’, ‘oon’ and &

  2. C++を使用して停止ステーションの数を見つける

    ポイントXとYの間にn個の中間駅があります。2つの駅が隣接しないように、s駅に停車するように列車を配置できるさまざまな方法の数を数えます。そのため、この記事では、停車駅の数を見つけるためのあらゆる可能なアプローチについて説明します。問題を見ると、sの駅数で列車を止めることができる組み合わせを見つける必要があることがわかります。 問題を解決するためのアプローチ 中間駅が8つあり、3つの中間駅で電車を止める方法を見つける必要がある例を見てみましょう。 n = 8, s = 3 (n-s)、つまり電車が止まらない駅が5つ残っています 電車が止まらないA、B、C、D、Eの5つの駅があります