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

सी++ में दो सूचियों का न्यूनतम सूचकांक योग

मान लीजिए कि दो राक्षस हैं अमल और बिमल रात के खाने के लिए एक रेस्तरां चुनना चाहते हैं, अब उन दोनों के पास स्ट्रिंग्स द्वारा दर्शाए गए पसंदीदा रेस्तरां की एक सूची है। हमें न्यूनतम सूची सूचकांक राशि के साथ उनके सामान्य हित का पता लगाने में उनकी मदद करनी होगी। यदि अलग-अलग उत्तरों के बीच कोई विकल्प टाई है, तो उन सभी को बिना किसी आदेश की आवश्यकता के वापस कर दें।

इसलिए, यदि इनपुट ["एबीसी", "पीक्यूआर", "एमएनओ", "एक्सवाईजेड"], और ["टीयूवी", "जीएचआई", "केएलएम", "एबीसी"] जैसा है, तो आउटपुट होगा [ "एबीसी"]

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक नक्शा एमपी परिभाषित करें

  • कम से कम :=inf

  • इनिशियलाइज़ i :=0 के लिए, जब i

    • इनिशियलाइज़ j :=0 के लिए, जब j

      • अगर l1[i] l2[j] के समान है, तो -

        • mp[i + j]

          . के अंत में l1[i] डालें
  • एक सरणी रेस परिभाषित करें

  • यह =एमपी का पहला तत्व

  • रेस :=इसका मूल्य

  • रिटर्न रेस

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
public:
   vector<string> findRestaurant(vector<string>& l1, vector<string>& l2) {
      map<int, vector<string> > mp;
      int least = INT_MAX;
      for (int i = 0; i < l1.size(); i++)
         for (int j = 0; j < l2.size(); j++)
            if (l1[i] == l2[j])
               mp[i + j].push_back(l1[i]);
      vector<string> res;
      auto it = mp.begin();
      res = it->second;
      return res;
   }
};
main(){
   Solution ob;
   vector<string> v = {"ABC","PQR","MNO","XYZ"}, v1 = {"TUV","GHI","KLM","ABC"};
   print_vector(ob.findRestaurant(v, v1));
}

इनपुट

{"ABC","PQR","MNO","XYZ"}, {"TUV","GHI","KLM","ABC"}

आउटपुट

[ABC, ]

  1. C++ में दो लिंक्ड सूचियों का प्रतिच्छेदन

    एक लिंक्ड सूची एक रैखिक डेटा संरचना है जिसमें प्रत्येक नोड में दो ब्लॉक होते हैं जैसे कि एक ब्लॉक में नोड का मान या डेटा होता है और दूसरे ब्लॉक में अगले फ़ील्ड का पता होता है। आइए मान लें कि हमारे पास एक लिंक्ड सूची है जैसे कि प्रत्येक नोड में एक यादृच्छिक सूचक होता है जो सूची में अन्य नोड्स को इंग

  1. दो योग IV - इनपुट C++ में एक BST है

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री और एक लक्ष्य मान है; हमें यह जांचना होगा कि क्या बीएसटी में दो तत्व मौजूद हैं जैसे कि उनका योग दिए गए लक्ष्य के बराबर है या नहीं। तो, अगर इनपुट पसंद है तो आउटपुट ट्रू होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - सरणी को परिभाषित करें v एक

  1. दो नंबर जोड़ने के लिए C++ प्रोग्राम

    जोड़ एक बुनियादी अंकगणितीय ऑपरेशन है। दो संख्याओं को जोड़ने का कार्यक्रम दो संख्याओं का योग करता है और उनके योग को स्क्रीन पर प्रिंट करता है। एक प्रोग्राम जो दो संख्याओं के योग को प्रदर्शित करता है, वह इस प्रकार दिया गया है - उदाहरण #include <iostream> using namespace std; int main() {