এই সমস্যায়, আমাদেরকে অনন্য পূর্ণসংখ্যার একটি অ্যারে দেওয়া হয়েছে। এবং আমাদের অ্যারের মধ্যে উপস্থিত সমস্ত জোড়া পূর্ণসংখ্যা (ধনাত্মক এবং ঋণাত্মক পূর্ণসংখ্যা) ফেরত দিতে হবে।
সমস্যাটি আরও ভালোভাবে বোঝার জন্য একটি উদাহরণ নেওয়া যাক -
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