# [Solved] Given an array nums of integers, return the length of the longest arithmetic subsequence in nums.

## Question

Given an array `nums` of integers, return the length of the longest arithmetic subsequence in `nums`.

Recall that a subsequence of an array `nums` is a list `nums[i1], nums[i2], ..., nums[ik]` with `0 <= i1 < i2 < ... < ik <= nums.length - 1`, and that a sequence `seq` is arithmetic if `seq[i+1] - seq[i]` are all the same value (for `0 <= i < seq.length - 1`).

Example 1:

```Input: nums = [3,6,9,12]
Output: 4
Explanation:
The whole array is an arithmetic sequence with steps of length = 3.
```

Example 2:

```Input: nums = [9,4,7,2,10]
Output: 3
Explanation:
The longest arithmetic subsequence is [4,7,10].
```

Example 3:

```Input: nums = [20,1,15,3,10,5,8]
Output: 4
Explanation:
The longest arithmetic subsequence is [20,15,10,5].
```

Constraints:

• `2 <= nums.length <= 1000`
• `0 <= nums[i] <= 500`

## Python Solution

```class Solution:
def longestArithSeqLength(self, A: List[int]) -> int:
d = {}
n = len(A)

for i in range(n):
for j in range(i+1,n):
if (i,A[j]-A[i]) not in d:
d[(j,A[j]-A[i])] = 1
else:
d[(j,A[j]-A[i])] = 1 + d[(i,A[j]-A[i])]

# print(d)
m = 0
for i in d:
m = max(m,d[i])

return m+1```