मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है और इसे गैर-घटते क्रम में क्रमबद्ध किया जाता है, हमें यह जांचना होगा कि क्या इसे किसी भी संख्या में बाद में विभाजित किया जा सकता है जैसे कि प्रत्येक बाद की न्यूनतम लंबाई 3 हो और जो लगातार बढ़ रही हो।पी>
इसलिए, यदि इनपुट संख्या =[2, 3, 4, 4, 5, 6, 7] की तरह है, तो आउटपुट सही होगा, क्योंकि हम सूची को [2, 3, 4] और [4] में विभाजित कर सकते हैं। 5, 6, 7]।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- गणना :=एक नक्शा जिसमें अंकों और उसकी गणना के तत्व शामिल हैं
- शुरू होता है:=एक नई सूची
- समाप्त :=एक नई सूची
- गणना की वस्तुओं में प्रत्येक x के लिए क्रमबद्ध क्रम में करें
- अगर गिनती [x]> गिनती [x - 1], तो
- l :=आकार की सूची (गिनती[x] - गिनती[x - 1]) और x से भरें
- प्रारंभ में l डालें
- अगर गिनती [x]> गिनती [x + 1], तो
- l :=आकार की सूची (गिनती[x] - गिनती[x + 1]) और x से भरें
- प्रारंभ में l डालें
- अगर गिनती [x]> गिनती [x - 1], तो
- जब सभी (प्रारंभ, अंत) जोड़ी संतुष्ट होती है तो सही लौटें (प्रारंभ + 2 <=अंत), अन्यथा झूठी वापसी करें
उदाहरण (पायथन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
from collections import Counter class Solution: def solve(self, nums): count = Counter(nums) starts = [] ends = [] for x in sorted(count): if count[x] > count[x - 1]: starts.extend([x] * (count[x] - count[x - 1])) if count[x] > count[x + 1]: ends.extend([x] * (count[x] - count[x + 1])) return all(s + 2 <= e for s, e in zip(starts, ends)) ob = Solution() nums = [2, 3, 4, 4, 5, 6, 7] print(ob.solve(nums))
इनपुट
[6, 7, 5, 10, 13], 2
आउटपुट
True