在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)