สมมติว่ามีอมาลสองคนและบีมาลต้องการเลือกร้านอาหารสำหรับมื้อค่ำ ตอนนี้พวกเขาทั้งคู่มีรายชื่อร้านอาหารโปรดที่แสดงด้วยสตริง เราต้องช่วยพวกเขาค้นหาความสนใจร่วมกันโดยมีค่าดัชนีน้อยที่สุด หากมีตัวเลือกที่เท่ากันระหว่างคำตอบที่ต่างกัน ให้ส่งคืนทั้งหมดโดยไม่มีข้อกำหนดการสั่งซื้อ
ดังนั้น หากอินพุตเป็น ["ABC","PQR","MNO","XYZ"] และ ["TUV","GHI","KLM","ABC"] เอาต์พุตจะเป็น [ "เอบีซี"]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดหนึ่ง mp mp
-
น้อยที่สุด :=inf
-
สำหรับการเริ่มต้น i :=0 เมื่อ i <ขนาด l1 อัปเดต (เพิ่ม i ขึ้น 1) ให้ทำ -
-
สำหรับการเริ่มต้น j :=0 เมื่อ j <ขนาดของ l2 อัปเดต (เพิ่ม j ขึ้น 1) ให้ทำ -
-
ถ้า l1[i] เหมือนกับ l2[j] แล้ว −
-
ใส่ l1[i] ต่อท้าย mp[i + j]
-
-
-
-
กำหนดความละเอียดของอาร์เรย์
-
มัน =องค์ประกอบแรกของ 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, ]