-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path1027.longest-arithmetic-subsequence.py
60 lines (41 loc) · 1.52 KB
/
1027.longest-arithmetic-subsequence.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from lc import *
class Solution:
def longestArithSeqLength(self, a: List[int]) -> int:
d = {}
for i in range(len(a)):
for j in range(i+1, len(a)):
d[j,a[j]-a[i]]=d.get((i,a[j]-a[i]),1)+1
return max(d.values())
class Solution:
def longestArithSeqLength(self, a: List[int]) -> int:
d={};n=len(a);[setitem(d,(j,a[j]-a[i]),d.get((i,a[j]-a[i]),1)+1)for i in range(n)for j in range(i+1,n)];return max(d.values())
class Solution:
def longestArithSeqLength(self, a: List[int]) -> int:
d={};r=range;[setitem(d,(i,t:=a[j]-a[i]),d.get((j,t),1)+1)for i in r(len(a))for j in r(i)];return max(d.values())
test('''
1027. Longest Arithmetic Subsequence
Medium
3182
145
Add to List
Share
Given an array nums of integers, return the length of the longest arithmetic subsequence in nums.
Note that:
A subsequence is an array that can be derived from another array by deleting some or no elements without changing the order of the remaining elements.
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
''')