Hard
Arithmetic Slices II - Subsequence — Python
Full explanation · Time O(n^2) · Space O(n * d)
# Time: O(n^2)
# Space: O(n * d)
import collections
class Solution(object):
def numberOfArithmeticSlices(self, A):
"""
:type A: List[int]
:rtype: int
"""
result = 0
dp = [collections.defaultdict(int) for i in xrange(len(A))]
for i in xrange(1, len(A)):
for j in xrange(i):
diff = A[i]-A[j]
dp[i][diff] += 1
if diff in dp[j]:
dp[i][diff] += dp[j][diff]
result += dp[j][diff]
return result