इस समस्या में, हमें दो सरणियाँ arr[] और del[] दी गई हैं। हमारा काम दिए गए तत्वों को हटाने के बाद सबसे छोटा खोजना है ।
हम सरणी एआर [] से मूल्यों को हटा देंगे जो डेल [] में मौजूद हैं। और फिर हटाने के बाद सबसे छोटा मान प्रिंट करें।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
arr[] = {2, 5, 6, 9, 1} del[] = {1, 5, 9}
आउटपुट
2
समाधान दृष्टिकोण
समस्या का एक सरल समाधान हैशिंग का उपयोग करना है। हम हैश तालिका में del[] सरणी के सभी मान सम्मिलित करेंगे। फिर हम सरणी एआर [] को पार करेंगे और जांचेंगे कि हैश तालिका में मान हैं या नहीं। यदि यह minVal से छोटा है। यदि हाँ, तो minVal प्रिंट करें।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#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