কম্পিউটার

একটি অ্যারেতে অনন্য উপাদান যেখানে C++ এ একটি ছাড়া সব উপাদান k বার হয়


আমাদের একটি অ্যারে রয়েছে। A-তে সমস্ত উপাদান 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] AND 2^i) 0 এর সমান না হয়, তাহলে −
      • গণনা[i] :=গণনা[i] + 1
    • res :=0
  • আরম্ভ করার জন্য i :=0, যখন i
  • res :=res + ((count[i] mod m) * 2^i)
  • রিটার্ন রিটার্ন
  • আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    উদাহরণ (C++)

    #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++-এ অ্যারেতে সমস্ত উপাদান সমান করার জন্য ন্যূনতম অপারেশন

    2. একটি অ্যারে উপাদান খুঁজুন যাতে সমস্ত উপাদান এটি দ্বারা c++ ব্যবহার করে বিভাজ্য হয়

    3. C++-এ অ্যারের সমস্ত উপাদান একই করতে ন্যূনতম ডিলিট অপারেশন।

    4. একটি অ্যারের (C++) মধ্যে সব জোড়া জোড়া ধারাবাহিক উপাদানের পরম পার্থক্য?