मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है, और सबसे लंबी सबलिस्ट इनम्स की लंबाई पाएं, जैसे कि प्रत्येक लगातार संख्याओं के बीच समानता संबंध वैकल्पिक रूप से ऑपरेशन से कम और अधिक से अधिक के बीच बदलता है। पहली दो संख्याओं की असमानता या तो उससे कम या उससे बड़ी हो सकती है।
इसलिए, यदि इनपुट अंकों की तरह है =[1, 2, 6, 4, 5], तो आउटपुट 4 होगा, क्योंकि सबसे लंबी असमानता वैकल्पिक सबलिस्ट है [2, 6, 4, 5] 2 <6> 4 के रूप में <5.
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
फ़ंक्शन get_direction () को परिभाषित करें। इसमें a, b
. लगेगा-
वापसी 0 यदि a, b के समान है अन्यथा -1 यदि a
-
-
यदि अंकों का आकार <2 है, तो
-
अंकों का वापसी आकार
-
-
max_length :=1, cur_length :=1, last_direction :=0
-
मैं के लिए 0 से लेकर अंकों के आकार -1 तक की सीमा में हूं
-
दिशा:=get_direction (अंक [i], अंक [i + 1])
-
अगर दिशा 0 के समान है, तो
-
cur_length :=1
-
-
अन्यथा जब दिशा last_direction के समान हो, तब
-
cur_length :=2
-
-
अन्यथा,
-
cur_length :=cur_length + 1
-
-
max_length :=अधिकतम_लंबाई और cur_length की अधिकतम
-
last_direction :=दिशा
-
-
वापसी max_length
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें-
उदाहरण
class Solution: def solve(self, nums): if len(nums) < 2: return len(nums) def get_direction(a, b): return 0 if a == b else -1 if a < b else 1 max_length = 1 cur_length = 1 last_direction = 0 for i in range(len(nums) - 1): direction = get_direction(nums[i], nums[i + 1]) if direction == 0: cur_length = 1 elif direction == last_direction: cur_length = 2 else: cur_length += 1 max_length = max(max_length, cur_length) last_direction = direction return max_length ob = Solution() nums = [1, 2, 6, 4, 5] print(ob.solve(nums))
इनपुट
[1, 2, 6, 4, 5]
आउटपुट
4