কম্পিউটার

C++ ব্যবহার করে দুটি অ্যারের ওভারল্যাপিং যোগফল খুঁজুন


এই সমস্যায়, আমাদেরকে দুটি অ্যারে দেওয়া হয়েছে arr1[] এবং arr2[] অনন্য মান নিয়ে গঠিত। আমাদের কাজ হল দুটি অ্যারের ওভারল্যাপিং যোগফল খুঁজে বের করা৷

অ্যারের সমস্ত উপাদান স্বতন্ত্র। এবং আমাদের উভয় অ্যারের জন্য সাধারণ উপাদানগুলির যোগফল ফেরত দিতে হবে

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট

arr1[] = {5, 4, 9, 2}, arr2[] = {6, 3, 9, 4}

আউটপুট

2

ব্যাখ্যা

The elements that are present in both arrays are 9 and 4.
The sum is 9 + 9 + 4 + 4 = 26

সমাধান পদ্ধতি

সমস্যার একটি সহজ সমাধান হল একটি অ্যারেকে ট্র্যাভার্সিং বলে arr1[] এবং প্রতিটি উপাদানের জন্য অন্য অ্যারেতে একটি মানানসই মান আছে কিনা তা পরীক্ষা করুন। যদি বর্তমান মানের সাথে মেলে এমন কোনো উপাদান পাওয়া যায়, তাহলে যোগফলের মানের সাথে উভয় যোগ করুন।

এই পদ্ধতির জন্য লুপগুলির নেস্টিং প্রয়োজন যা O(N 2 অর্ডারের সময় জটিলতার দিকে নিয়ে যায় )।

সমস্যা সমাধানের আরেকটি পদ্ধতি হল হ্যাশিং ব্যবহার করা। আমরা একটি হ্যাশ টেবিল তৈরি করব এবং টেবিলে উভয় অ্যারের মান সংরক্ষণ করব এবং উপাদানগুলির ফ্রিকোয়েন্সি গণনা রাখব। তারপর ঘটনা কম্পাঙ্ক দুই সঙ্গে মান যোগ করুন. যোগফল মানের দ্বিগুণ ফেরত দিন।

উদাহরণ

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

#include <bits/stdc++.h>
using namespace std;
int findCommonValSum(int A[], int B[], int n){
   unordered_map<int,int> hashTable;
   for(int i=0;i<n;i++){
      if(hashTable.find(A[i])==hashTable.end())
      hashTable.insert(make_pair(A[i],1));
      else
         hashTable[A[i]]++;

      if(hashTable.find(B[i])==hashTable.end())
         hashTable.insert(make_pair(B[i],1));
      else
      hashTable[B[i]]++;
   }
   int commSum = 0;
   for(auto itr = hashTable.begin(); itr!=hashTable.end(); itr++){
      if((itr->second)==2){
         commSum += (itr->first);
      }
   }
   return (commSum*2);
}
int main(){
   int A[] = { 5, 4, 9, 2 };
   int B[] = { 6, 3, 9, 4 };
   int n = sizeof(A) / sizeof(A[0]);
   cout<<"The sum of common values in the array are "<<findCommonValSum(A, B, n);
   return 0;
}

আউটপুট

The sum of common values in the array are 26

  1. C++ ব্যবহার করে একটি অ্যারের মধ্যে একটি সংখ্যার ফ্রিকোয়েন্সি খুঁজুন।

  2. C++ ব্যবহার করে N ফ্যাক্টোরিয়ালের যোগফলের শেষ দুটি সংখ্যা খুঁজুন।

  3. অদলবদল করা উপাদানগুলির একটি জোড়া খুঁজুন যা C++ এ দুটি অ্যারের সমষ্টিকে সমান করে তোলে

  4. C++ প্রোগ্রাম বাইনারি অনুসন্ধান পদ্ধতি ব্যবহার করে সর্বাধিক সাবয়ারের যোগফল খুঁজে বের করতে