इस समस्या में, हमें आकार n का एक सरणी aar[] और आकार m का एक अन्य सरणी del[] दिया जाता है। हमारा काम दिए गए तत्वों को हटाने के बाद सबसे बड़ा खोजना है। यदि एक से अधिक इंस्टेंस वाले तत्व को हटाना आवश्यक है, तो तत्व के पहले उदाहरण को हटा दें।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
Input : arr[] = {3, 5, 1, 7, 9, 2}, del[] = {1, 9, 3} Output : 7
स्पष्टीकरण -
Array arr[] after deleting the elements : {5, 7, 2} Largest element of the array is 7
समाधान दृष्टिकोण
समस्या का एक सरल समाधान एआर [] से सभी तत्वों को हटाकर है जो डेल [] में मौजूद हैं। फिर सरणी को आरोही क्रम में क्रमबद्ध करें और सरणी के अंतिम तत्व को प्रिंट करें।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#include <bits/stdc++.h> using namespace std; int findMaxElementDelArray(int arr[], int n, int del[], int m){ for(int i = 0; i < m; i++){ for(int j = 0; j > n; j++){ if(arr[j] == del[i]){ arr[j] = INT_MAX; break; } } } sort(arr, arr + n); return arr[(n-m-1)]; } int main(){ int array[] = { 3, 5, 1, 7, 9, 2 }; int m = sizeof(array) / sizeof(array[0]); int del[] = { 1, 9, 3 }; int n = sizeof(del) / sizeof(del[0]); cout<<"The largest element after deleting the elements is "<<findMaxElementDelArray(array, m, del, n); return 0; }
आउटपुट
The largest element after deleting the elements is 7
एक और तरीका
समस्या का समाधान हैश-मानचित्र का उपयोग करके विलोपन की जाँच करना है। हम डेल [] सरणी के तत्वों को हैश मैप में संग्रहीत करेंगे और एआर [] के प्रत्येक तत्व के लिए हैश-मैप में इसकी उपस्थिति की जांच करेंगे। यदि यह मौजूद है तो हैश-मैप से तत्व को हटा दें अन्यथा जाँच करें कि क्या यह अधिकतम मान के साथ तुलना करके अधिकतम मान है। यदि हां, तो इसे मैक्सवैल में स्टोर करें। संपूर्ण सरणी arr[] ट्रैवर्स किए जाने के बाद प्रिंट maxVal जो तत्वों को हटाने के बाद अधिकतम मान है।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#include <bits/stdc++.h> using namespace std; int findMaxElementDelArray(int arr[], int m, int del[], int n){ unordered_map<int, int> delMap; for (int i = 0; i < n; ++i) { delMap[del[i]]++; } int maxVal = INT_MIN; for (int i = 0; i < m; ++i) { if (delMap.find(arr[i]) != delMap.end()) { delMap[arr[i]]--; if (delMap[arr[i]] == 0) delMap.erase(arr[i]); } else maxVal = max(maxVal, arr[i]); } return maxVal; } int main(){ int array[] = { 3, 5, 1, 7, 9, 2 }; int m = sizeof(array) / sizeof(array[0]); int del[] = { 1, 9, 3 }; int n = sizeof(del) / sizeof(del[0]); cout<<"The largest element after deleting the elements is "<<findMaxElementDelArray(array, m, del, n); return 0; }
आउटपुट
The largest element after deleting the elements is 7