কম্পিউটার

C++-এ অন্যান্য অ্যারের উপাদানগুলির থেকে ভিন্ন ফ্রিকোয়েন্সি বিশিষ্ট উপাদানটি খুঁজুন


ধরুন আমাদের কাছে N সংখ্যার একটি অ্যারে আছে, যেখানে একটি উপাদান ছাড়া অ্যারের প্রতিটি উপাদান একই সংখ্যক বার (m বার, এটিও দেওয়া আছে) প্রদর্শিত হয়, আমাদের এই উপাদানটি খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুট হয় A =[6, 2, 7, 2, 2, 6, 6], m =3, তাহলে আউটপুট হবে 7।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • INT_SIZE :=8 * একটি পূর্ণসংখ্যা টাইপ ভেরিয়েবলের আকার

  • আকারের একটি অ্যারে গণনা নির্ধারণ করুন - INT_SIZE। এবং 0

    দিয়ে পূরণ করুন
  • আরম্ভ করার জন্য i :=0, যখন i

    • আরম্ভ করার জন্য j :=0, যখন j <সাইজ, আপডেট করুন (j 1 দ্বারা বাড়ান), করবেন −

      • যদি (arr[j] এবং 2^i) 0 এর সমান না হয়, তাহলে −

        • গণনা[i] :=গণনা[i] + 1

      • res :=0

    • আরম্ভ করার জন্য i :=0, যখন i

      • res :=res + ((count[i] mod m) * 2^i)

    • রিটার্ন রিটার্ন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#include <bits/stdc++.h>
using namespace std;
int selectUnique(unsigned int arr[], int size, int m){
   int INT_SIZE = 8 * sizeof(unsigned int);
   int count[INT_SIZE];
   memset(count, 0, sizeof(count));
   for(int i = 0; i < INT_SIZE; i++)
      for(int j = 0; j < size; j++)
         if((arr[j] & (1 << i)) != 0)
            count[i] += 1;
   unsigned res = 0;
   for(int i = 0; i < INT_SIZE; i++)
      res += (count[i] % m) * (1 << i);
   return res;
}
main(){
   unsigned int arr[] = { 6, 2, 5, 2, 2, 6, 6 };
   int size = sizeof(arr) / sizeof(arr[0]);
   int m = 3;
   cout << selectUnique(arr, size, m);
}

ইনপুট

{ 6, 2, 5, 2, 2, 6, 6 }

আউটপুট

5

  1. C++ এ O(n) সময়ের কম সময়ে একটি সীমিত পরিসরের অ্যারেতে প্রতিটি উপাদানের ফ্রিকোয়েন্সি খুঁজুন

  2. C++ এ একটি অ্যারেতে ক্ষুদ্রতম মানের ফ্রিকোয়েন্সি খুঁজুন

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

  4. অ্যারে পার্টিশন করার পদ্ধতি দ্বারা kth ক্ষুদ্রতম উপাদান খুঁজে বের করার জন্য C++ প্রোগ্রাম