Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 요소의 양수 및 음수 값을 포함하는 모든 쌍 인쇄


이 문제에서는 고유한 정수 배열이 제공됩니다. 그리고 배열에 있는 모든 정수 쌍(양수 및 음수)을 반환해야 합니다.

문제를 더 잘 이해하기 위해 예를 들어 보겠습니다 -

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

문제를 해결하는 쉬운 방법은 두 개의 루프를 사용하고 양수 쌍을 찾는 것입니다. 그러나 이 솔루션은 복잡한 솔루션이 될 것이며 n2차수의 시간 복잡도를 가질 것입니다. 여기서 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