ধরুন আমাদের কাছে টাস্ক নামক মানের একটি তালিকা আছে যেখানে প্রতিটি ভিন্ন মান একটি ভিন্ন টাস্ক টাইপের প্রতিনিধিত্ব করে এবং আমাদের কাছে একটি অ-নেতিবাচক পূর্ণসংখ্যা k আছে। প্রতিটি টাস্ক সম্পূর্ণ হতে এক মিনিট চায়, কিন্তু একই ধরনের দুটি কাজ করার মধ্যে আমাদের অবশ্যই k মিনিট অপেক্ষা করতে হবে। যে কোন সময়, আমরা একটি কাজ করতে বা অপেক্ষা করতে পারি। সমস্ত কাজ সম্পূর্ণ করতে আমাদের সবচেয়ে কম সময় বের করতে হবে।
সুতরাং, যদি ইনপুটটি সংখ্যা =[2, 2, 2, 3, 3, 2], k =1 এর মতো হয়, তাহলে আউটপুট হবে 7, যেমন সর্বোত্তম ক্রম [2, 3, 2, 3, 2, অপেক্ষা করছি, 2]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
c :=সংখ্যায় সমস্ত মানের গণনা
-
উত্তর :=0, শেষ আকার :=0
-
যখন c অ-শূন্য, কর
-
lastsize :=c এর আকার
-
প্রতিটি মানের জন্য x সর্বাধিক সাধারণ (k + 1) মানের c, do
-
c[x] :=c[x] − 1
-
যদি c[x] 0 এর সমান হয়, তাহলে
-
c[x]
সরান
-
-
-
-
ans :=ans + k + 1
-
-
উত্তর + শেষ আকার - (k + 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