मान लीजिए दो दोस्त अमल और बिमल रात के खाने के लिए एक रेस्तरां चुनना चाहते हैं, अब उन दोनों के पास पसंदीदा रेस्तरां की सूची है जो स्ट्रिंग्स द्वारा दर्शाई गई है। हमें उनकी सामान्य रुचि को न्यूनतम सूची इंडेक्स योग के साथ ढूंढने में मदद करनी है। यदि विभिन्न उत्तरों के बीच चयन में टाई है, तो बिना किसी क्रम की आवश्यकता के उन सभी को वापस करें।
इसलिए, यदि इनपुट ["ABC","PQR","MNO","XYZ"] और ["TUV","GHI","KLM","ABC"] जैसा है, तो आउटपुट ["ABC"] होगा।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- एक मैप
mpपरिभाषित करें least := infi := 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, ]