मान लीजिए हमारे पास संख्याओं की एक सूची nums और एक मान diff है, हमें उस सबसे लंबे अंकगणितीय सबसीक्वेंस की लंबाई ढूंढनी है जहां सबसीक्वेंस में किन्हीं दो लगातार संख्याओं का अंतर diff के बराबर हो।
उदाहरण के लिए, यदि इनपुट है nums = [-1, 1, 4, 7, 2, 10], diff = 3, तो आउटपुट 4 होगा, क्योंकि हम सबसीक्वेंस [1, 4, 7, 10] चुन सकते हैं।
एल्गोरिदम
seen:= एक खाली डिक्शनरी, डिफ़ॉल्ट मान 0mx := 0- प्रत्येक
xके लिएnumsमें:- यदि
x - diffseenमें है, तोseen[x] := seen[x - diff] + 1 - अन्यथा,
seen[x] := 1 mx := max(mx, seen[x])
- यदि
mxलौटाएं
उदाहरण कार्यान्वयन
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)) # आउटपुट: 4
इनपुट
[-1, 1, 4, 7, 2, 10], 3
आउटपुट
4