मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हम सख्ती से बढ़ते मानों का एक सबसीक्वेंस चुनते हैं, जहां प्रत्येक दो संख्याओं का अंतर उनके दो इंडेक्स के अंतर के समान है। तो हमें ऐसे सबसीक्वेंस का अधिकतम योग ढूंढना है।
तो, यदि इनपुट nums = [6, 7, 9, 9, 8, 5] जैसा है, तो आउटपुट 22 होगा, क्योंकि हम सबसीक्वेंस [6, 7, 9] चुनते हैं जिनके इंडेक्स [0, 1, 3] हैं। प्रत्येक लगातार संख्या के बीच का अंतर [1, 2] है जो उनके इंडेक्स के अंतर के समान है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- d := एक खाली मैप
- प्रत्येक इंडेक्स i और मान x nums में के लिए, करें
- d[x - i] := d[x - i] + x
- d में सभी मानों का अधिकतम लौटाएं
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution:
def solve(self, nums):
from collections import defaultdict
d = defaultdict(int)
for i, x in enumerate(nums):
d[x - i] += x
return max(d.values())
ob1 = Solution()
nums = [6, 7, 9, 9, 8, 5]
print(ob1.solve(nums))
इनपुट
[6, 7, 9, 9, 8, 5]
आउटपुट
22