এই সমস্যাতে, আমাদের দুটি অ্যারে arr[] এবং del[] দেওয়া আছে। আমাদের কাজ হল নির্দিষ্ট এলিমেন্ট ডিলিট করার পর সবচেয়ে ছোট মান বের করা।
আমরা arr[] অ্যারেতে থেকে del[]-এ উপস্থিত মানগুলো ডিলিট করব। তারপর ডিলিশনের পর সবচেয়ে ছোট মান প্রিন্ট করব।
উদাহরণ দেখি:
ইনপুট
arr[] = {2, 5, 6, 9, 1} del[] = {1, 5, 9}
আউটপুট
2
সমাধানের পদ্ধতি
এই সমস্যা সমাধানের একটি সহজ পদ্ধতি হল হ্যাশিং ব্যবহার করা। আমরা del[] অ্যারের সব মান হ্যাশ টেবিলে ইন্সার্ট করব। তারপর arr[] অ্যারেটি ট্রাভার্স করব এবং চেক করব যে মানগুলো হ্যাশ টেবিলে আছে কিনা। যদি থাকে, তবে সেগুলো বাদ দিয়ে বাকি মানগুলোর মধ্যে থেকে মিনিমাম মান বের করব।
উদাহরণ
আমাদের সমাধানের কাজকর্ম বোঝার জন্য প্রোগ্রাম:
#include <bits/stdc++.h> using namespace std; int findSmallestVal(int arr[], int m, int del[], int n){ unordered_map<int, int> delVals; for (int i = 0; i < n; ++i) { delVals[del[i]]++; } int minVal = INT_MAX; for (int i = 0; i < m; ++i) { if (delVals.find(arr[i]) != delVals.end()) { delVals[arr[i]]--; if (delVals[arr[i]] == 0) delVals.erase(arr[i]); } else minVal = min(minVal, arr[i]); } return minVal; } int main(){ int array[] = { 5, 12, 33, 4, 56, 12, 20 }; int m = sizeof(array) / sizeof(array[0]); int del[] = { 12, 4, 56, 5 }; int n = sizeof(del) / sizeof(del[0]); cout<<"The smallest value after the deleting element is "<<findSmallestVal(array, m, del, n); return 0; }
আউটপুট
The smallest value after the deleting element is 12