मान लीजिए कि हमारे पास कार्यों नामक मानों की एक सूची है जहां प्रत्येक भिन्न मान एक अलग कार्य प्रकार का प्रतिनिधित्व करता है, और हमारे पास एक गैर-ऋणात्मक पूर्णांक k भी है। प्रत्येक कार्य एक मिनट पूरा करना चाहता है, लेकिन हमें एक ही प्रकार के दो कार्यों को करने के बीच k मिनट प्रतीक्षा करनी चाहिए। हम किसी भी समय कोई कार्य कर सकते हैं या प्रतीक्षा कर सकते हैं। हमें सभी कार्यों को पूरा करने के लिए कम से कम समय निकालना होगा।
इसलिए, यदि इनपुट संख्या =[2, 2, 2, 3, 3, 2], के =1 की तरह है, तो आउटपुट 7 होगा, क्योंकि इष्टतम क्रम [2, 3, 2, 3, 2, प्रतीक्षा, 2].
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
c :=अंकों में सभी मानों की गणना
-
उत्तर:=0, अंतिम आकार:=0
-
जबकि c गैर-शून्य है, करें
-
अंतिम आकार :=c का आकार
-
प्रत्येक मान x के लिए सबसे सामान्य (k + 1) c के मानों में, करें
-
c[x] :=c[x] - 1
-
अगर c[x] 0 के समान है, तो
-
c[x]
हटाएं
-
-
-
-
उत्तर:=उत्तर + के + 1
-
-
वापसी उत्तर + अंतिम आकार - (के + 1)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, nums, k): from collections import Counter c = Counter(nums) ans = 0 lastsize = 0 while c: lastsize = len(c) for x, _ in c.most_common(k + 1): c[x] -= 1 if c[x] == 0: del c[x] ans += k + 1 return ans + lastsize - (k + 1) ob1 = Solution() nums = [2, 2, 2, 3, 3, 2] k = 1 print(ob1.solve(nums, k))
इनपुट
[2, 2, 2, 3, 3, 2], 1
आउटपुट
7