मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है, हमें लंबाई ≥ 3 के अंकगणितीय अनुक्रमों की संख्या का पता लगाना है। जैसा कि हम जानते हैं कि अंकगणितीय अनुक्रम संख्याओं की एक सूची है जहां एक संख्या और अगली के बीच का अंतर समान होता है।पी>
इसलिए, यदि इनपुट अंकों की तरह है =[6, 12, 13, 8, 10, 14], तो आउटपुट 3 होगा, क्योंकि हमारे पास बाद की तरह हैं:[6, 8, 10], [6, 10, 14] ], [12, 13, 14]।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
-
डीपी:=एक नया नक्शा
-
n :=अंकों का आकार
-
रेस :=0
-
मेरे लिए 0 से n की सीमा में, करें
-
j के लिए 0 से i की सीमा में, करें
-
अंतर:=अंक [i] - अंक [जे]
-
पिछला :=dp[(i, diff)] अगर वह मौजूद नहीं है, तो 0
-
prevprev :=dp[(j, diff)] अगर वह मौजूद नहीं है, तो 0
-
dp[i, diff] :=पिछला + पिछला + 1
-
रेस :=रेस + प्रीवप्रेव
-
-
-
रिटर्न रेस
उदाहरण
class Solution: def solve(self, nums): dp = {} n = len(nums) res = 0 for i in range(n): for j in range(i): diff = nums[i] - nums[j] prev = dp.get((i, diff), 0) prevprev = dp.get((j, diff), 0) dp[(i, diff)] = prev + prevprev + 1 res += prevprev return res ob = Solution() nums = [6, 12, 13, 8, 10, 14] print(ob.solve(nums))
इनपुट
[6, 12, 13, 8, 10, 14]
आउटपुट
3