小言_互联网的博客

LeetCode5214. 最长定差子序列

306人阅读  评论(0)

1.问题

给你一个整数数组 arr 和一个整数 difference,请你找出 arr 中所有相邻元素之间的差等于给定 difference 的等差子序列,并返回其中最长的等差子序列的长度。

示例 1:

输入:arr = [1,2,3,4], difference = 1
输出:4
解释:最长的等差子序列是 [1,2,3,4]。

提示:

1 <= arr.length <= 10^5
-10^4 <= arr[i], difference <= 10^4

原题链接;

2.解答

使用字典来记录之前各个数字的情况。

class Solution(object):
    def longestSubsequence(self, A, D):
        count = collections.defaultdict(int)
        for x in A:
            #prev + d = x
            # prev = x-d
            # print(count[x])
            count[x] = max(count[x], count[x-D] + 1)
        return max(count.values())  

转载:https://blog.csdn.net/rosefun96/article/details/102240109
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场