मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें सबसे लंबे सबसीक्वेंस की लंबाई ढूंढनी है जो प्रत्येक लगातार संख्या पर साइन बदलता है।
उदाहरण के लिए, यदि इनपुट nums = [1, 3, -6, 4, -3] है, तो आउटपुट 4 होगा, क्योंकि हम [1, -6, 4, -3] चुन सकते हैं।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे (डायनामिक प्रोग्रामिंग):
pos := 0, neg := 0(पॉजिटिव/नेगेटिव पर खत्म होने वाली सबसे लंबी सबसीक्वेंस)- प्रत्येक
nके लिएnumsमें:- यदि
n < 0:neg := pos + 1 - अन्यथा:
pos := neg + 1
- यदि
max(pos, neg)लौटाएं
उदाहरण कोड
class Solution:
def solve(self, nums):
pos = neg = 0
for n in nums:
if n < 0:
neg = pos + 1
else:
pos = neg + 1
return max(pos, neg)
ob = Solution()
nums = [1, 3, -6, 4, -3]
print(ob.solve(nums))इनपुट
[1, 3, -6, 4, -3]
आउटपुट
4