leetcode 1218: 最长定差子序列
题目描述:给你一个整数数组 arr 和一个整数 difference,请你找出 arr 中所有相邻元素之间的差等于给定 difference 的等差子序列,并返回其中最长的等差子序列的长度。
解题步骤:
解法1:采用最长递增子序列类似的方法。(存在计算超时问题)
1、 状态定义:dp[i]表示数组nums[0…i]的最长递增子序列
2、 状态转移方程:如果dp[i]-dp[j]==difference 则dp[i] = max(dp[i],dp[j]+1)
3、 初始化:dp[i]全为1
4、 输出:dp[i]的最大值
代码:
public int longestSubsequence1(int[] arr, int difference) {
int[] dp = new int[arr.length];
int ret = 1;
Arrays.fill(dp, 1);
for (int i = 1