1218. 最長定差子序列
阿新 • • 發佈:2020-07-24
給你一個整數陣列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
來源:力扣(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 inarr: dp[a]=1 if a-difference in dp://如果在之前的儲存中則更新為 dp[a]=dp[a-difference]+1 return max(dp.values())