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())

 

posted @ 2019-10-07 09:46  oldby  阅读(127)  评论(0编辑  收藏  举报