leetcode-157周赛-5214-最长定差子序列
题目描述:
class Solution: def longestSubsequence(self, arr: List[int], difference: int) -> int: dp = dict() for a in arr: pre = a - difference if pre in dp: dp[a] = max(dp.get(a, 0), dp[pre] + 1) else: dp[a] = 1 return max([x for _, x in dp.items()])
优化:
class Solution(object): def longestSubsequence(self, A, D): count = collections.defaultdict(int) for x in A: #prev + d = x # prev = x-d count[x] = max(count[x], count[x-D] + 1) return max(count.values())