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

নির্দিষ্ট উপাদান ডিলিট করে অ্যারেতে k বড় উপাদান বের করা (C++)


সমস্যা বিবরণ

অ্যারে arr[] (সাইজ n), del[] (সাইজ m), এবং k দেওয়া আছে। del[]-এর উপাদানগুলো arr[]-এ থেকে ডিলিট করে (প্রথম অকারেন্স) বাকি অ্যারেতে kটি সবচেয়ে বড় উপাদান বের করা।

উদাহরণ

ইনপুট: arr[]={3,5,1,7,9,2}, del[]={1,9,3}, k=2
আউটপুট: 7, 5
ব্যাখ্যা: ডিলিট পর: {5,7,2}, সর্টেড ডিসেন্ডিং: {7,5,2}, প্রথম ২টি: 7,5।

পদ্ধতি ১: ব্রুট ফোর্স + সর্ট (O(n×m + n log n))

del[]-এর উপাদান খুঁজে INT_MIN মার্ক করে ডিসেন্ডিং সর্ট করে প্রথম kটি নেওয়া।

পদ্ধতি ২: হ্যাশ ম্যাপ + ম্যাক্স-হিপ (O(n+m + k log n)) - সেরা

del[] হ্যাশে রেখে arr[]-এর অবশিষ্ট উপাদান ম্যাক্স-হিপে ঢুকিয়ে kবার পপ করা।

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

void findKMaxAfterDel(int arr[],int n,int del[],int m,int k){
    unordered_map<int,int> mp;
    for(int i=0;i

আউটপুট

7 5
  1. সি++ প্রোগ্রাম: সর্টেড অ্যারেতে দেওয়া মান থেকে kটি নিকটতম উপাদান খুঁজে বের করা

  2. দেওয়া পার্থক্যের সাথে একটি জোড়া খুঁজে বের করা C++-এ

  3. C++-এ দেওয়া ইন্ডেক্সের Nটি ফিবোনাচ্চি সংখ্যার GCD বের করা

  4. C++-এ অ্যারে উপাদানগুলির ফ্যাক্টোরিয়ালের GCD বের করা