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

更新日期:2019-10-24

320 次浏览

开启你的事业

完成课程后获得认证

开始
广告