मान लीजिए कि हमारे पास संख्याओं की एक सूची है और दूसरा मान भिन्न है, हमें सबसे लंबे अंकगणितीय अनुक्रम की लंबाई का पता लगाना है, जहां बाद में किसी भी लगातार संख्याओं के बीच का अंतर अंतर के समान है।
इसलिए, यदि इनपुट अंकों की तरह है =[-1, 1, 4, 7, 2, 10] अंतर =3, तो आउटपुट 4 होगा, क्योंकि, हम बाद में [1, 4, 7, 10] चुन सकते हैं ].
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- देखा:=एक खाली शब्दकोश, कुंजी मौजूद नहीं होने पर डिफ़ॉल्ट मान 0 होता है
- एमएक्स :=0
- अंकों में प्रत्येक x के लिए, करें
- यदि x-diff दिखाई दे रहा है, तो
- देखा[x] :=देखा[x - diff] + 1
- अन्यथा,
- देखा[x] :=1
- mx :=अधिकतम mx और देखा गया[x]
- यदि x-diff दिखाई दे रहा है, तो
- रिटर्न एमएक्स
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
from collections import defaultdict def solve(nums, diff): seen = defaultdict(int) mx = 0 for x in nums: if x - diff in seen: seen[x] = seen[x - diff] + 1 else: seen[x] = 1 mx = max(mx, seen[x]) return mx nums = [-1, 1, 4, 7, 2, 10] diff = 3 print(solve(nums, diff))
इनपुट
[-1, 1, 4, 7, 2, 10], 3
आउटपुट
4