ধরুন আমাদের কাছে nums নামে একটি সংখ্যার তালিকা আছে, এবং আরেকটি মান k, আমাদের পরীক্ষা করতে হবে যে তালিকাটিকে সাবলিস্ট তালিকায় বিভক্ত করা সম্ভব কিনা যেমন প্রতিটি সাবলিস্টের দৈর্ঘ্য ≥ k এবং এটি কঠোরভাবে বৃদ্ধি পাচ্ছে। তালিকাটি ধারাবাহিকভাবে বিভক্ত করার প্রয়োজন নেই।
সুতরাং, যদি ইনপুটটি nums =[6, 7, 5, 10, 13] k =2 এর মতো হয়, তাহলে আউটপুটটি True হবে, কারণ বিভাজনটি [5, 6] এবং [7, 10, 13]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- c :=একটি মানচিত্র যাতে সংখ্যা এবং এর সংখ্যার উপাদান রয়েছে
- max_count :=c এর সকল ফ্রিকোয়েন্সির সর্বোচ্চ
- সত্য ফেরত দিন যখন max_count * k <=সংখ্যার আকার অন্যথায় মিথ্যা হয়
উদাহরণ (পাইথন)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
from collections import Counter class Solution: def solve(self, nums, k): c = Counter(nums) max_count = max([v for k, v in c.items()]) return max_count * k <= len(nums) ob = Solution() nums = [6, 7, 5, 10, 13] k = 2 print(ob.solve(nums, k))
ইনপুট
[6, 7, 5, 10, 13], 2
আউটপুট
False