কম্পিউটার

C++ এ দুটি তালিকার ন্যূনতম সূচক সমষ্টি


ধরুন অমল এবং বিমল দু'জন শয়তান রাতের খাবারের জন্য একটি রেস্তোরাঁ বেছে নিতে চান, এখন তাদের দুজনের পছন্দের রেস্তোরাঁর তালিকা রয়েছে যা স্ট্রিং দ্বারা প্রতিনিধিত্ব করে। আমাদের তাদের সর্বনিম্ন তালিকা সূচক যোগফল দিয়ে তাদের সাধারণ আগ্রহ খুঁজে বের করতে সাহায্য করতে হবে। যদি বিভিন্ন উত্তরের মধ্যে একটি চয়েস টাই থাকে, তাহলে কোনো অর্ডার প্রয়োজন ছাড়াই সেগুলি ফেরত দিন।

সুতরাং, যদি ইনপুটটি ["ABC","PQR","MNO","XYZ"], এবং ["TUV","GHI","KLM","ABC"] এর মত হয়, তাহলে আউটপুট হবে [ "ABC"]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি মানচিত্র mp

    সংজ্ঞায়িত করুন
  • সর্বনিম্ন :=inf

  • আরম্ভ করার জন্য i :=0, যখন i

    • j শুরু করার জন্য :=0, যখন j

      • যদি l1[i] l2[j] এর মত হয়, তাহলে −

        • mp[i + j]

          এর শেষে l1[i] ঢোকান
  • একটি অ্যারের রেস

    সংজ্ঞায়িত করুন
  • এটা =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, ]

  1. C++ এ দুটি লিঙ্ক করা তালিকার ছেদ

  2. দুই যোগফল IV - ইনপুট হল C++ এ একটি BST

  3. C++ এ দুটি তালিকার সাধারণ উপাদানের জন্য ন্যূনতম সূচক যোগফল

  4. দুই নম্বর যোগ করার জন্য C++ প্রোগ্রাম