1. 程式人生 > 實用技巧 >1218. 最長定差子序列

1218. 最長定差子序列

給你一個整數陣列arr和一個整數difference,請你找出arr中所有相鄰元素之間的差等於給定difference的等差子序列,並返回其中最長的等差子序列的長度。

示例 1:

輸入:arr = [1,2,3,4], difference = 1
輸出:4
解釋:最長的等差子序列是 [1,2,3,4]。
示例2:

輸入:arr = [1,3,5,7], difference = 1
輸出:1
解釋:最長的等差子序列是任意單個元素。
示例 3:

輸入:arr = [1,5,7,8,5,3,4,2,1], difference = -2
輸出:4
解釋:最長的等差子序列是 [7,5,3,1]。

提示:

1 <= arr.length <= 10^5

-10^4 <= arr[i], difference <= 10^4

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/longest-arithmetic-subsequence-of-given-difference

dp水題

class Solution:
    def longestSubsequence(self, arr: List[int], difference: int) -> int:
        n=len(arr)
        res=1
        dp={}
        for a in
arr: dp[a]=1 if a-difference in dp://如果在之前的儲存中則更新為 dp[a]=dp[a-difference]+1 return max(dp.values())