मान लीजिए कि हमारे पास समय के समान अंतराल पर कार की स्थिति का प्रतिनिधित्व करने वाली संख्याओं की एक सूची है। हमें सबसे लंबे सबलिस्ट के आकार का पता लगाना है जहां कार स्थिर गति से यात्रा कर रही थी।
इसलिए, यदि इनपुट समान स्थिति =[0, 4, 8, 12, 6, 4, 0] है, तो आउटपुट 4 होगा, क्योंकि सबलिस्ट [0, 4, 8, 12] है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- j :=1
- max_cnt:=0, वर्तमान:=0
- दूरी:=|स्थिति[0] - स्थिति[1]|
- जबकि j <पदों का आकार, करें
- पिछला :=स्थिति[j - 1]
- यदि दूरी समान है |स्थिति[j] - पिछला| , फिर
- वर्तमान:=वर्तमान + 1
- अन्यथा,
- max_cnt :=अधिकतम अधिकतम_cnt और वर्तमान
- वर्तमान:=1
- दूरी:=|स्थिति[j] - पिछला|
- max_cnt :=अधिकतम अधिकतम_cnt और वर्तमान
- j :=j + 1
- अधिकतम_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