मान लीजिए कि हमारे पास टीवी शो की एक सूची है, और अवधि की एक और सूची है, और एक पूर्णांक k, यहां दिखाता है [i] और अवधि [i] ith द्वारा देखे गए नाम और अवधि को दर्शाता है व्यक्ति, हमें k सबसे अधिक देखे जाने वाले शो की कुल अवधि ज्ञात करनी होगी।
तो, यदि इनपुट शो की तरह है:["कैसल प्ले", "फेयरी टेल सीरीज़", "कैसल प्ले", "जेरी माउस", "रिच बॉय"], अवधि:[6, 4 , 6, 14, 5] और k =2, तो आउटपुट 26 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक नक्शा परिभाषित करें मी
-
n:=वी का आकार
-
इनिशियलाइज़ i :=0 के लिए, जब i
-
एम[वी[i]]:=एम[वी[i]] + डी[i]
-
-
एक सरणी गिरफ्तारी परिभाषित करें
-
प्रत्येक कुंजी-मान युग्म के लिए इसे m
-
गिरफ्तारी के अंत में इसका मूल्य डालें
-
-
सरणी को उल्टे क्रम में क्रमबद्ध करें
-
रिट:=0
-
इनिशियलाइज़ करने के लिए मैं :=0, जब i
-
रिट :=रिट + एआर [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