在 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 次瀏覽

開啟你的事業

完成課程後獲得認證

開始
廣告
© . All rights reserved.