我們需要適當的知識才能在 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
有兩種方法可以解決這個問題,它們是−
在這種方法中,我們將遍歷每個可能的配對,將這些配對加入一個集合中,最後找出集合的大小。這種方法的時間複雜度是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
在這段程式碼中,首先我們宣告了一個集合變量,然後使用兩個循環遍歷每對可能的元素,並使用i和j將每對元素插入集合中。然後我們計算集合的大小並列印結果。
另一種方法是先找出數組中唯一數字的數量;現在,除了它本身之外,每個其他唯一元素都可以與任何其他唯一元素創建一對,因此唯一對的數量等於所有唯一數字的平方。此方法的時間複雜度為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找到了結果,並列印出輸出。
在本文中,我們解決了在陣列中找到唯一對數的問題,討論了兩種解決方法,即簡單和高效。在簡單的方法中,我們將所有可能的對數插入到具有O(n2 log n)時間複雜度的集合中,而在高效的方法中,我們找到所有唯一的數字,並透過n2找到結果。我們可以使用其他語言(如C、Java、Python和其他語言)編寫相同的程式。希望您會發現這篇文章有幫助。
以上是使用C++找到數組中唯一配對的數量的詳細內容。更多資訊請關注PHP中文網其他相關文章!