C ++中两个列表的最小索引和
假设有两个恶魔,阿玛尔(Amal)和比玛尔(Bimal)想选择一家餐厅作为晚餐,现在他们俩都有用字符串表示的最喜欢的餐厅列表。我们必须帮助他们找出列表索引和最少的共同利益。如果不同答案之间存在选择关系,则将其全部返回,而无需订购。
因此,如果输入类似于[“ABC”,“PQR”,“MNO”,“XYZ”]和[“TUV”,“GHI”,“KLM”,“ABC”],则输出将为[“ABC”]
为了解决这个问题,我们将遵循以下步骤-
定义一张映射mp
至少:=inf
对于初始化i:=0,当i<l1的大小时,更新(将i增加1),执行-
如果l1[i]与l2[j]相同,则-
在mp[i+j]的末尾插入l1[i]
对于初始化j:=0,当j<l2的大小时,更新(将j增加1),执行-
定义数组res
它=mp的第一个元素
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; } }; 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, ]