मान लीजिए हमारे पास संख्याओं की एक सूची है जो समान समय अंतराल पर कार की स्थिति को दर्शाती है। हमें सबसे लंबे सबलिस्ट का आकार ढूंढना है जहां कार स्थिर गति से चल रही थी।
उदाहरण के लिए, यदि इनपुट positions = [0, 4, 8, 12, 6, 4, 0] है, तो आउटपुट 4 होगा, क्योंकि सबलिस्ट है [0, 4, 8, 12]।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
- j := 1
- max_cnt := 0, current := 0
- distance := |positions[0] - positions[1]|
- जब तक j < positions का आकार, करें
- prev := positions[j - 1]
- यदि distance, |positions[j] - prev| के समान है, तो
- current := current + 1
- अन्यथा,
- max_cnt := max_cnt और current में से अधिकतम
- current := 1
- distance := |positions[j] - prev|
- max_cnt := max_cnt और current में से अधिकतम
- j := j + 1
- max_cnt + 1 लौटाएं
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
उदाहरण
class Solution:
def solve(self, positions):
j = 1
max_cnt = 0
current = 0
distance = abs(positions[0] - positions[1])
while j < len(positions):
prev = positions[j - 1]
if distance == abs(positions[j] - prev):
current += 1
else:
max_cnt = max(max_cnt, current)
current = 1
distance = abs(positions[j] - prev)
max_cnt = max(max_cnt, current)
j += 1
return max_cnt + 1
ob = Solution()
positions = [0, 4, 8, 12, 6, 4, 0]
print(ob.solve(positions))
इनपुट
[0, 4, 8, 12, 6, 4, 0]
आउटपुट
4