在 C++ 中查找一个具有给定差异的成对元素
考虑我们有数组 A,它有 n 个不同的元素。我们必须从数组 A 中找出成对的 (x, y),使得 x 和 y 之间的差值与给定的差值 d 相同。假设元素列表为 A = [10, 15,26,30,40,70],给定的差值是 30,那么配对将为 (10, 40) 和 (30, 70)
为了解决此问题,我们假设数组已被排序,然后从左开始,我们将采用两个指针来指明元素,最初第一个“i”将指向第一个元素,第二个“j”将指向第二个元素。当 A[j] – A[i] 等于 n 时,然后打印配对,如果 A[j] – A[i] < n,则将 j 增加 1,否则将 i 增加 1。
示例
#include<iostream> using namespace std; void displayPair(int arr[], int size, int n) { int i = 0; int j = 1; while (i < size && j < size) { if (i != j && arr[j] - arr[i] == n) { cout << "(" << arr[i] << ", " << arr[j] << ")"<<endl; i++; j++; } else if (arr[j]-arr[i] < n) j++; else i++; } } int main() { int arr[] = {10, 15, 26, 30, 40, 70}; int size = sizeof(arr)/sizeof(arr[0]); int n = 30; displayPair(arr, size, n); }
输出
(10, 40) (40, 70)
广告