मान लीजिए हमारे पास nums नामक संख्याओं की एक लिस्ट है, और एक मान k है, हमें चेक करना है कि क्या लिस्ट को सबलिस्ट में विभाजित करना संभव है जैसे कि प्रत्येक सबलिस्ट की लंबाई ≥ k हो और वह सख्ती से बढ़ती हो। लिस्ट को सन्निकट रूप से विभाजित करने की आवश्यकता नहीं है।
उदाहरण के लिए, यदि इनपुट nums = [6, 7, 5, 10, 13], k = 2 है, तो आउटपुट True होगा, क्योंकि विभाजन [5, 6] और [7, 10, 13] है।
समाधान दृष्टिकोण
इस समस्या को हल करने के लिए हम आवृत्ति गिनती का उपयोग करेंगे:
- c := nums के तत्वों और उनकी गिनती वाला मैप
- max_count := c की सभी आवृत्तियों का अधिकतम
- यदि max_count * k <= nums का आकार है तो True लौटाएं, अन्यथा False
पायथन कार्यान्वयन
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