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

C++-এ আনসর্টেড অ্যারেতে মিসিং পজিটিভ নাম্বার বের করা

একটি আনসর্টেড পূর্ণসংখ্যা অ্যারে দেওয়া থাকলে, [0, n] রেঞ্জে কোন পজিটিভ সংখ্যা অনুপস্থিত সেটা বের করতে হবে।

ইনপুট-১

N = 9, arr = [0,2,5,9,1,7,4,3,6]

আউটপুট

8

ইনপুট-২

N = 1, arr = [0]

আউটপুট

1

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

XOR অপারেশন ব্যবহার করে O(n) টাইম এবং O(1) স্পেসে সমাধান করা যায়।

  • অ্যারে সাইজ N এবং এলিমেন্ট ইনপুট নিন।
  • findMissingNumber(int arr[], int size) ফাংশন মিসিং নাম্বার রিটার্ন করবে।
  • missing_no = size দিয়ে শুরু করুন।
  • প্রতিটি ইন্ডেক্স i এবং এলিমেন্ট arr[i]-র সাথে XOR করুন: missing_no ^= i ^ arr[i]।
  • শেষে missing_no হবে মিসিং সংখ্যাটি।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

int findMissingNumber(int *arr, int size) {
    int missing_no = size;
    for (int i = 0; i < size; i++)
        missing_no ^= i ^ arr[i];
    return missing_no;
}

int main() {
    int n = 6;
    int arr[n] = {0,4,2,1,6,3};
    cout << findMissingNumber(arr, n) << endl;
    return 0;
}

আউটপুট

5
  1. C++ প্রোগ্রাম: দেওয়া পূর্ণসংখ্যাগুলো থেকে সর্বোচ্চ ট্যালি মান নির্ণয়

  2. C++ প্রোগ্রাম: গ্রাফে ব্রিজ এজের সংখ্যা নির্ণয়

  3. C++ প্রোগ্রাম: স্ট্রিংয়ের পারমুটেশন সংখ্যা বের করা

  4. জাভায় অনসোর্টেড ইন্টিজার অ্যারেতে অনুপস্থিত পজিটিভ নম্বর খুঁজে বের করা