কম্পিউটার টিউটোরিয়াল

C++-ে বিট অ্যারে (Bit Array) ব্যবহার করে অ্যারেতে ডুপ্লিকেট খুঁজে বের করা


কনসেপ্ট

n সংখ্যক উপাদানের অ্যারে (n ≤ 32,000) দেওয়া আছে। ডুপ্লিকেট উপাদানগুলো প্রিন্ট করতে হবে। মেমোরি সীমা: ৪ কিলোবাইট (৩২,০০০ বিট)।

ইনপুট ১

arr[] = {2, 6, 2, 11, 13, 11}

আউটপুট ১

2 11

ইনপুট ২

arr[] = {60, 50, 60}

আউটপুট ২

60

পদ্ধতি

৪ KB = ৩২,৭৬৮ বিট > ৩২,০০০। বিট ভেক্টর (bit vector) বানান যেখানে প্রতিটি বিট একটি ইন্টিজার রিপ্রেজেন্ট করে। অ্যারে ট্রাভার্স করুন: উপাদান v-এর জন্য বিট v চেক করুন। সেট থাকলে ডুপ্লিকেট, প্রিন্ট করুন। নয় তবে সেট করুন।

উদাহরণ (C++ কোড)

// C++: বিট অ্যারে দিয়ে ডুপ্লিকেট খুঁজে বের
#include <bits/stdc++.h>
using namespace std;

class BitArray {
    int *arr1;
public:
    BitArray() {}
    BitArray(int n1) { arr1 = new int[(n1>>5)+1]; } // ৩২ বিটต่อ ইন্ট
    bool get(int pos1) {
        int index1 = pos1>>5, bitNo1 = pos1&0x1F;
        return (arr1[index1] & (1<>5, bitNo1 = pos1&0x1F;
        arr1[index1] |= (1<

আউটপুট

2 11
  1. C++ ব্যবহার করে স্ট্রাকচার অ্যারেতে সর্বোচ্চ মান বের করা

  2. ডুপ্লিকেট অনুমতির সাথে অ্যারেতে ফিক্সড পয়েন্ট খুঁজে বের করা C++-এ

  3. C++ STL-এ accumulate দিয়ে অ্যারে প্রোডাক্ট বের করা

  4. পাইথনে বিট অ্যারে ব্যবহার করে অ্যারে-র ডুপ্লিকেট বের করা