ধরুন আমাদের কাছে টিভি শোগুলির একটি তালিকা এবং সময়কালের আরেকটি তালিকা এবং একটি পূর্ণসংখ্যা k, এখানে দেখায় [i] এবং সময়কাল[i] ith দ্বারা দেখা নাম এবং সময়কাল দেখায় ব্যক্তি, আমাদের k সর্বাধিক দেখা শোগুলির মোট সময়কাল খুঁজে বের করতে হবে৷
সুতরাং, ইনপুটটি যদি শোগুলির মতো হয়:["ক্যাসল প্লে", "ফেয়ারি টেল সিরিজ", "ক্যাসল প্লে", "জেরি মাউস", "রিচ বয়"], সময়কাল:[6, 4 , 6, 14, 5] এবং k =2, তাহলে আউটপুট হবে 26।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি মানচিত্র m
সংজ্ঞায়িত করুন -
n :=v
এর আকার -
আরম্ভ করার জন্য i :=0, যখন i
-
m[v[i]] :=m[v[i]] + d[i]
-
-
একটি অ্যারে অ্যারে সংজ্ঞায়িত করুন
-
প্রতিটি কী-মানের জোড়ার জন্য এটি m
-
arr
এর শেষে এর মান সন্নিবেশ করান
-
-
অ্যারে অ্যারের বিপরীত ক্রমে সাজান
-
ret :=0
-
আরম্ভ করার জন্য i :=0, যখন i
-
ret :=ret + arr[i]
-
-
রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h> using namespace std; class Solution { public: int solve(vector<string>& v, vector<int>& d, int k) { map <string, int> m; int n = v.size(); for(int i = 0; i < n; i++){ m[v[i]] += d[i]; } vector < int > arr; for(auto it : m){ arr.push_back(it.second); } sort(arr.rbegin(), arr.rend()); int ret = 0; for(int i = 0; i < k; i++){ ret += arr[i]; } return ret; } }; int main(){ vector<string> v = {"Castle Play", "Fairy Tale Series", "Castle Play", "Jerry Mouse", "Rich Boy"}; vector<int> v1 = {6, 4, 6, 14, 5}; Solution ob; cout << (ob.solve(v, v1, 2)); }
ইনপুট
{"Castle Play", "Fairy Tale Series", "Castle Play", "Jerry Mouse", "Rich Boy"}, {6, 4, 6, 14, 5}, 2
আউটপুট
26