在数组中查找总和已存在于 C++ 数组中的对
在这个问题中,我们得到一个由N个整数组成的数组arr[]。我们的任务是在数组中找到和已经存在于数组中的对。我们需要在数组中找到sumvalue=avalue的对
让我们举个例子来理解这个问题,
输入
arr[] = {1, 2, 4, 6, 7}输出结果
(1, 6), (2, 4)
解释
对于(1,6)对,数组中存在的值之和为7。
对于(2,4)对,数组中存在的值之和为6。
解决方法
该问题的一个简单解决方案是使用数组元素找到所有可能的对。然后计算parir的值的总和。在数组中搜索此总和值,如果存在则打印。
此外,我们将有一个用于计算对数的计数器。如果它是0,我们将打印没有找到的对。
程序来说明我们的解决方案的工作,
示例
#includeusing namespace std; void findSumPairsArr(int arr[], int n){ int pairCount = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = 0; k < n; k++) { if (arr[i] + arr[j] == arr[k]) { cout<<"( "< 输出结果 数组中总和已存在于数组中的对-
( 1, 6 ), sum = 7 ( 2, 4 ), sum = 6另一种更有效的方法是使用哈希表解决问题。我们将检查所有巴黎,然后计算它们的总和并检查它是否存在于数组中并跟踪它。如果pairCount为0,则打印“未找到此类对!”。
在这里,c中哈希表的实现是使用unordered_set完成的。
程序来说明我们的解决方案的工作,
示例
#includeusing namespace std; void findSumPairsArr(int arr[], int n) { unordered_set HT; for (int i = 0; i < n; i++) HT.insert(arr[i]); int pairCount = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (HT.find(arr[i] + arr[j]) != HT.end()) { cout<<"( "< 输出结果 数组中总和已存在于数组中的对-
( 1, 6 ), sum = 7 ( 2, 4 ), sum = 6