Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में दिए गए तत्वों को हटाने के बाद सबसे बड़ा खोजें

इस समस्या में, हमें आकार 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

  1. C++ में दिए गए मान के निकटतम तत्वों को खोजें

    विचार करें कि हमारे पास कुछ तत्वों के साथ एक सरणी ए है। हमारे पास दो अन्य मान X और k हैं। हमारा कार्य सरणी A से X के निकटतम तत्वों की k संख्या ज्ञात करना है। यदि तत्व X सरणी में मौजूद है, तो यह आउटपुट में नहीं दिखाया जाएगा। अगर ए =[12, 16, 22, 30, 35, 39, 42, 45, 48, 50, 53, 55, 56] और एक्स =35, के

  1. C++ में दिए गए अंतर के साथ एक जोड़ी खोजें

    विचार करें कि हमारे पास एक सरणी A है, n विभिन्न तत्व हैं। हमें सरणी A से एक युग्म (x, y) ज्ञात करना है, ताकि x और y के बीच का अंतर दिए गए अंतर d के समान हो। मान लीजिए कि तत्वों की एक सूची A =[10, 15, 26, 30, 40, 70] की तरह है, और दिया गया अंतर 30 है, तो जोड़ी होगी (10, 40) और (30, 70) इस समस्या को

  1. C++ में दिए गए सरणी के तत्वों के भाज्य का GCD ज्ञात कीजिए

    मान लीजिए कि हमारे पास एन तत्वों के साथ एक सरणी ए है। हमें सरणी के सभी तत्वों के भाज्य का GCD ज्ञात करना है। मान लीजिए कि तत्व {3, 4, 8, 6} हैं, तो भाज्य का GCD 6 है। यहाँ हम ट्रिक देखेंगे। चूँकि दो संख्याओं का GCD वह सबसे बड़ी संख्या है, जो दोनों संख्याओं को विभाजित करती है, तो दो संख्याओं के भाज्य