কম্পিউটার

যাদের পছন্দের কোম্পানির তালিকা C++ এ অন্য তালিকার উপসেট নয়


ধরুন আমাদের প্রিয় কোম্পানি নামক একটি অ্যারে আছে যেখানে favoriteCompanies[i] হল ith ব্যক্তির পছন্দের কোম্পানির তালিকা। আমাদের এমন লোকদের সূচক খুঁজে বের করতে হবে যাদের পছন্দের কোম্পানির তালিকা অন্য কোনো পছন্দের কোম্পানির তালিকার উপসেট নয়।

সুতরাং, যদি ইনপুট পছন্দের কোম্পানির মত হয় =[["TCS", "google", "facebook"], ["google","microsoft"], ["google", "facebook"], ["google"], ["amazon"]], তাহলে আউটপুট হবে [0,1,4], কারণ index=2 এর ব্যক্তির ["google", "facebook"] আছে যা পছন্দের কোম্পানিগুলির একটি উপসেট[0]=[" TCS", "google", "facebook"] সূচক 0 সহ ব্যক্তির সাথে সম্পর্কিত।

এখন ইনডেক্স=3 সহ ব্যক্তির কাছে ["google"] আছে যা প্রিয় কোম্পানির একটি উপসেট[0]=["TCS", "google", "facebook"] এবং favorite কোম্পানি[1]=["google", "microsoft"] . পছন্দের কোম্পানির অন্যান্য তালিকা অন্য তালিকার উপসেট নয়, তাই, উত্তর হল [0,1,4]।

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

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
public:
   bool ok(vector<string>& a, vector<string>& b){
      int cnt = 0;
      int i = 0;
      int j = 0;
      while (i < a.size() && j < b.size()) {
         if (a[i] == b[j]) {
            i++;
            j++;
            cnt++;
         }
         else if (a[i] < b[j]) {
            i++;
         }
         else {
            j++;
         }
      }
      return cnt < a.size();
   }
   vector<int> peopleIndexes(vector<vector<string> >& f){
      set<int> s;
      int n = f.size();
      for (int i = 0; i < n; i++) {
         sort(f[i].begin(), f[i].end());
      }  
      for (int i = 0; i < n; i++) {
         bool c = true;
         for (int j = 0; j < n; j++) {
            if (i == j)
               continue;
            c &= ok(f[i], f[j]);
         }
         if (c)
            s.insert(i);
      }
      return vector<int>(s.begin(), s.end());
   }
};
main(){
   Solution ob;
   vector<vector<string>> v = {{"TCS","google","facebook"},{"google","microsoft"},{"google","facebo
ok"},{"google"},{"amazon"}};
print_vector(ob.peopleIndexes(v));
}

ইনপুট

{{"TCS","google","facebook"},{"google","microsoft"},{"google","facebook"},{"google"},{"amazon"}}

আউটপুট

[0, 1, 4, ]

  1. C++ এ একটি তালিকায় অনুপস্থিত পারমুটেশন

  2. অক্ষরগুলির একটি দ্বিগুণ লিঙ্কযুক্ত তালিকা প্যালিনড্রোম কিনা তা পরীক্ষা করুন C++ এ নয়

  3. একটি চেনাশোনা অন্য বৃত্তের মধ্যে আছে নাকি C++-এ নেই তা পরীক্ষা করুন

  4. C++ এ স্ট্র্যান্ড সাজান