কম্পিউটার

প্রথম উপাদান যা C++-এ একটি অ্যারেতে যতবার দেখা যায়


এই সমস্যায়, আমাদেরকে N পূর্ণসংখ্যার মান সমন্বিত একটি অ্যারে [] দেওয়া হয়েছে। আমাদের কাজ হল প্রথম উপাদান খুঁজে বের করার জন্য একটি প্রোগ্রাম তৈরি করা যা একটি অ্যারেতে যতবার দেখা যায় . যদি কোনো উপাদান বিদ্যমান থাকে যা শর্ত পূরণ করে তা ফেরত দেয় অন্যথায় -1 বোঝায় false .

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

Input: arr[] = {2, 3, 7, 2, 3, 6, 4, 1, 2}
Output: 3

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

সমস্যা সমাধানের একটি সহজ পদ্ধতি হল অ্যারের প্রতিটি উপাদানকে একের পর এক বিবেচনা করা এবং তারপরে উপাদানটির সংঘটন ফ্রিকোয়েন্সি যাচাই করা এবং অ্যারের প্রথম উপাদানটিকে জোড় সংঘটন ফ্রিকোয়েন্সি সহ ফেরত দেওয়া। সমস্যা সমাধানের আরেকটি পদ্ধতি হল হ্যাশ ম্যাপ ব্যবহার করে তথ্য কাঠামো. এর জন্য, আমরা অ্যারেটি অতিক্রম করব এবং একটি হ্যাশ ম্যাপ তৈরি করব যা উপাদানগুলিকে তাদের সংঘটনের ফ্রিকোয়েন্সি সহ টগল হিসাবে সংরক্ষণ করবে অর্থাৎ সত্য বা মিথ্যা এই সত্যের উপর ভিত্তি করে যে এটি সমান বা না। এটি ঘটনার ফ্রিকোয়েন্সি সত্য বা মিথ্যা কিনা তা পরীক্ষা করার ওভারহেডগুলি হ্রাস করবে কারণ টগলটি প্রয়োজনীয় ফলাফল দেখাবে। মানচিত্রের জন্য, প্রথম উপাদান যার মান সত্য (সংঘটনের এমনকি ফ্রিকোয়েন্সি নির্দেশ করে) আমাদের প্রয়োজনীয় ফলাফল।

আমরা অ্যারে অতিক্রম করব এবং প্রতিটি মানের জন্য, অ্যারেতে অর্থাৎ arr[i] আমরা মানচিত্রে পরীক্ষা করব,

যদি এটি মানচিত্রে উপস্থিত না থাকে তবে টগল মান 'false দিয়ে মানচিত্রে যোগ করুন ' যদি এটি মানচিত্রে উপস্থিত থাকে, তাহলে এটির সাথে সম্পর্কিত বর্তমান মানটিকে টগল করুন অর্থাৎ যদি এটি 'সত্য হয় ' এটি তৈরি করুন 'মিথ্যা ', এবং যদি এটি 'মিথ্যা হয় ' এটা করুন 'সত্য '।

অ্যারের পুনরাবৃত্তির পরে, মানচিত্রটি পুনরাবৃত্তি করুন এবং 'সত্য হিসাবে টগলের একটি অনুরূপ মান সহ প্রথম মানটি ফেরত দিন। '।

উদাহরণ

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

#include <bits/stdc++.h>
using namespace std;
int findFirstEvenFreqVal(int arr[], int n){
   unordered_map<int, bool> freqTogMap;
   for (int i = 0; i < n; i++){
      if (freqTogMap.find(arr[i]) == freqTogMap.end())
         freqTogMap.insert(pair <int,bool> (arr[i],false));
      else
      {
         bool val = freqTogMap.find(arr[i])->second;
         if (val == true)
            freqTogMap.find(arr[i])->second = false;
         else
            freqTogMap.find(arr[i])->second = true;
      }
   }
   int j = 0;
   for (j = 0; j < n; j++){
      if (freqTogMap.find(arr[j])->second == true)
         return arr[j];;
   }
   return -1;
}
int main(){
   int arr[] = { 2, 4, 6, 8, 1, 6 };
   cout<<"The first element of the array which appears even number of times is "  <<findFirstEvenFreqVal(arr, 6);
   return 0;
}

আউটপুট

The first element of the array which appears even number of times is 6

  1. একটি বাইনারি অ্যারেকে বিভাজন করতে ন্যূনতম টগল করে যাতে এটিতে প্রথমে 0s তারপর C++ এ 1s থাকে

  2. একটি অ্যারেতে মৌলিক সংখ্যা K খুঁজুন যেমন (A[i] % K) C++-এ সর্বাধিক

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

  4. একটি অ্যারেতে ন্যূনতম সংখ্যা যোগ করুন যাতে যোগফল C++ এ সমান হয়?