এই সমস্যায়, ইউনিক ইন্টিজারগুলোর একটি অ্যারে দেওয়া থাকে। এবং আমাদের সেসব ইন্টিজার পেয়ার (পজিটিভ এবং নেগেটিভ ইন্টিজার) রিটার্ন করতে হবে যা অ্যারেতে উপস্থিত।
উদাহরণ দিয়ে বুঝি:
ইনপুট: array = {1 , 4 , 7 , -1, 2, 5, -7} আউটপুট: -1 1 -7 7সমস্যাটি সমাধান করার একটি সহজ পদ্ধতি হলো دوটি লুপ ব্যবহার করে পজিটিভ-নেগেটিভ পেয়ার খুঁজে বের করা। কিন্তু এই সমাধানটি জটিল হবে এবং এর টাইম কমপ্লেক্সিটি n² হবে যেখানে n হলো অ্যারের সাইজ।
আমাদের একটি আরও দক্ষ পদ্ধতি খুঁজে বের করতে হবে। এর জন্য, আমরা প্রথমে অ্যারেটি সর্ট করব। এবং এই সর্টেড অ্যারেতে, প্রতিটি নেগেটিভ ইন্টিজারের জন্য উল্টো (পজিটিভ) ইন্টিজার খুঁজে বের করব। এই বাইনারি সার্চ একটি ভালো পদ্ধতি। এবং সার্চ ব্যবহার করে খুঁজে পাওয়া পেয়ারগুলো প্রিন্ট করব।
C++ উদাহরণ
#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