मान लीजिए हमारे पास nums नामक एक गैर-घटती सरणी है जिसमें धनात्मक पूर्णांक हैं और एक पूर्णांक K है, हमें यह पता लगाना है कि क्या इस सरणी को एक या अधिक असंयुक्त बढ़ते उप-अनुक्रमों में विभाजित किया जा सकता है जिनकी लंबाई कम से कम K हो।
इसलिए, यदि इनपुट इस तरह है nums = [1, 2, 2, 3, 3, 4, 4], K = 3, तो आउटपुट true होगा, क्योंकि इस सरणी को [1, 2, 3, 4] और [2, 3, 4] जैसे दो उप-अनुक्रमों में विभाजित किया जा सकता है जिनकी लंबाई कम से कम 3 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
d := एक नया मैप
req := 0
nums में प्रत्येक i के लिए, करें
यदि i, d में नहीं है, तो
d[i] := 1
अन्यथा,
d[i] := d[i] + 1
req := req, d[i] का अधिकतम
req * K <= nums का आकार होने पर true लौटाएं
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object): def canDivideIntoSubsequences(self, nums, K): d = {} req = 0 for i in nums: if i not in d: d[i] = 1 else: d[i] += 1 req = max(req, d[i]) return req * K <= len(nums) ob = Solution() print(ob.canDivideIntoSubsequences([1, 2, 2, 3, 3, 4, 4], 3))इनपुट
[1, 2, 2, 3, 3, 4, 4], 3
आउटपुट
True