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

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


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

इसलिए, यदि इनपुट ["ABC","PQR","MNO","XYZ"] और ["TUV","GHI","KLM","ABC"] जैसा है, तो आउटपुट ["ABC"] होगा।

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

  • एक मैप mp परिभाषित करें
  • least := inf
  • i := 0 से l1 का आकार - 1 तक लूप चलाएं:
    • j := 0 से l2 का आकार - 1 तक लूप चलाएं:
      • यदि l1[i] == l2[j], तो:
        • l1[i] को mp[i+j] के अंत में डालें
  • एक सरणी res परिभाषित करें
  • it = mp का पहला तत्व
  • res := it का मान
  • res वापस करें

उदाहरण

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

#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; 
    } 
}; 
int 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++ में दो लिंक्ड लिस्ट का इंटरसेक्शन C++ में दो लिंक्ड लिस्ट का इंटरसेक्शन

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

  1. C++ में टू सम IV - इनपुट एक BST है C++ में टू सम IV - इनपुट एक BST है

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

  1. - C++ प्रोग्राम: दो संख्याएं जोड़ें

    परिचयजोड़ एक बुनियादी अंकगणितीय संक्रिया है। दो संख्याओं को जोड़ने वाला प्रोग्राम दो संख्याओं का जोड़ करता है और उनका योग स्क्रीन पर प्रिंट करता है। उदाहरण#include <iostream> using namespace std; int main() { int num1 = 15, num2 = 10, sum; sum = num1 + num2; cout << Sum of