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

C++-এ ডুপ্লিকেট অ্যারে থেকে হারানো উপাদান খুঁজে বের করা


কনসেপ্ট

দুটি অ্যারে দেওয়া আছে যারা একে অপরের ডুপ্লিকেট বাদে একটি উপাদানে ভিন্ন। অর্থাৎ একটি অ্যারে থেকে একটা উপাদান অনুপস্থিত। সেই অনুপস্থিত উপাদানটি খুঁজে বের করুন।

ইনপুট ১

arr1[] = {2, 5, 6, 8, 10} arr2[] = {5, 6, 8, 10}

আউটপুট ১

2

২ দ্বিতীয় অ্যারেতে অনুপস্থিত।

ইনপুট ২

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

আউটপুট ২

7

৭ প্রথম অ্যারেতে অনুপস্থিত।

পদ্ধতি

সহজ সমাধান: লিনিয়ার টাইমে উপাদান율 মিলিয়ে যাচাই করুন।

দক্ষ সমাধান (বাইনারি সার্চ): বড় অ্যারেতে বাইনারি সার্চ করুন। mid = (low+high)/2। যদি mid-এ উপাদানগুলো সমান হয় তবে missing উপাদান ডানপাশে (low = mid), নয় তবে বামপাশে (high = mid)। বিশেষ কেস: প্রথম উপাদান ভিন্ন হলে সেটিই missing।

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

// C++ প্রোগ্রাম: একই অ্যারে থেকে (একটি উপাদান বাদে) অনুপস্থিত উপাদান খুঁজে বের
#include <bits/stdc++.h>
using namespace std;

// বাইনারি সার্চ দিয়ে missing উপাদান খুঁজে বের
int findMissingUtil(int arrA[], int arrB[], int Q) {
    if (Q == 1) return arrA[0]; // শুধু এক উপাদান missing
    if (arrA[0] != arrB[0]) return arrA[0]; // প্রথম উপাদান missing
    int low = 0, high = Q - 1;
    while (low < high) {
        int mid = (low + high) / 2;
        if (arrA[mid] == arrB[mid]) low = mid;
        else high = mid;
        if (low == high - 1) break;
    }
    return arrA[high]; // missing উপাদান বড় অ্যারেতে high ইনডেক্সে
}

// বেসিক চেক এবং কল
void findMissing(int arrA[], int arrB[], int P, int Q) {
    if (Q == P - 1) cout << "Missing Element is " << findMissingUtil(arrA, arrB, P) << endl;
    else if (P == Q - 1) cout << "Missing Element is " << findMissingUtil(arrB, arrA, Q) << endl;
    else cout << "Invalid Input";
}

int main() {
    int arrA[] = {2, 5, 6, 8, 10};
    int arrB[] = {5, 6, 8, 10};
    int P = sizeof(arrA) / sizeof(int);
    int Q = sizeof(arrB) / sizeof(int);
    findMissing(arrA, arrB, P, Q);
    return 0;
}

আউটপুট

Missing Element is 2
  1. সি++ প্রোগ্রাম: কন্ডিশনাল অপারেটর ছাড়া অ্যারেতে সর্বোচ্চ উপাদান নির্ণয়

  2. অ্যারে উপাদানগুলোর সারপাসার (Surpasser) কাউন্ট (C++)

  3. অ্যারেতে সবচেয়ে বড় এলিমেন্ট (Largest Element) বের করার C++ প্রোগ্রাম

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