কম্পিউটার

C++ এ একটি অ্যারেতে অদৃশ্য হওয়া সমস্ত সংখ্যা খুঁজুন


ধরুন আমাদের n উপাদানের একটি অ্যারে আছে। কিছু উপাদান দুইবার প্রদর্শিত হয় এবং অন্যগুলি একবার উপস্থিত হয়। উপাদানগুলি 1 রেঞ্জে রয়েছে <=A[i] <=n। আমাদের সেই উপাদানগুলো খুঁজে বের করতে হবে যেগুলো অ্যারেতে নেই। প্রতিবন্ধকতা হল অতিরিক্ত স্থান ব্যবহার না করেই আমাদের এই সমস্যার সমাধান করতে হবে, এবং সময় হবে O(n)।

সুতরাং যদি অ্যারে হয় [4, 3, 2, 7, 8, 2, 3, 1], তাহলে ফলাফল হবে [5, 6]

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

  • আলো n হল অ্যারের আকার
  • আমি 0 থেকে n – 1
      পরিসরে
    • x :=|A[i]| - 1
    • যদি A[x]> 0 হয়, তাহলে A[x] :=- A[x]
  • একটি অ্যারে হিসাবে উত্তর সংজ্ঞায়িত করুন
  • আমি 0 থেকে n – 1
      পরিসরে
    • যদি A[i]> 0 হয়, তাহলে উত্তরে i + 1 যোগ করুন
  • উত্তরটি ফেরত দিন

উদাহরণ

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

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]";
}
class Solution {
   public:
   vector<int> findDisappearedNumbers(vector<int>& v) {
      int n = v.size();
      for(int i = 0;i < n; i++){
         int x = abs(v[i]) - 1;
         if(v[x] > 0) v[x] = -v[x];
      }
      vector <int> ans;
      for(int i = 0; i < n; i++){
         if(v[i]>0)ans.push_back(i+1);
      }
      return ans;
   }
};
main(){
   Solution ob;
   vector<int> v{4,3,2,7,8,2,3,5};
   print_vector(ob.findDisappearedNumbers(v));
}

ইনপুট

[4,3,2,7,8,2,3,5]

আউটপুট

[1, 6, ]

  1. C++ এ একটি অ্যারেতে সমস্ত মৌলিক সংখ্যার গুণফল

  2. C++ এ একটি অ্যারের সমস্ত স্বতন্ত্র উপসেট (বা পরবর্তী) যোগফল খুঁজুন

  3. অ্যারেতে সমস্ত জোড়া (a,b) এবং (c,d) খুঁজুন যা C++ এ ab =cd সন্তুষ্ট করে

  4. সংখ্যার বিন্যাসের গুণফলের প্রথম সংখ্যা খুঁজে পেতে C++ প্রোগ্রাম