用 C++ 列印包含元素正負值的所有對


在這個問題中,我們得到一個由唯一整數構成的陣列。我們需要返回陣列中存在的所有整數對(正整數和負整數)。

讓我們來看一個例子,以便更好地理解這個問題:

Input: array = {1 , 4 , 7 , -1, 2, 5, -7}
Output: -11 -33

解決這個問題的一個簡單方法是使用兩個迴圈來查詢正負數對。但是,這種解決方案比較複雜,時間複雜度為 O(n²) ,其中 n 是陣列的大小。

但是,我們需要找到一個更高效的方法來解決這個問題。為此,我們將首先對陣列進行排序。然後在這個排序後的陣列中,對於每個負整數,查詢其相反數(正整數)。二分查詢將是一個不錯的選擇。並列印找到的數對。

示例

讓我們來看一下這種方法的程式碼示例:

線上演示

#include <bits/stdc++.h>
using namespace std;
void positiveNegativePair(int arr[], int n) ;
int main(){
   int arr[] = { 1, 4, 6 , 3, -1, -2, 5, -6, -5 , 8 };
   int n = 10;
   cout<<"Postive Negative pairs in the array are :\n";
   positiveNegativePair(arr, n);
   return 0;
}
void positiveNegativePair(int arr[], int n){
   bool pair_exists = false;
   sort(arr, arr + n);
   for (int i = 0; i < n; i++) {
      if (arr[i] < 0) {
         if (binary_search(arr, arr + n, -arr[i])) {
            cout<<arr[i]<<", "<<-arr[i]<<"\t";
            pair_exists = true;
         }
      }
      else
         break;
   }
   if (!pair_exists)
      cout << "No positive-negative pairs exist in the code";
}

輸出

陣列中的正負數對:

-6, 6 -5, 5 -1, 1

更新於:2020年1月17日

151 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.