动态规划:
dp[i][j] // 必须以i结尾的差为j的最长,这里需要空间压缩,用map
class Solution {
public:
int longestArithSeqLength(vector<int>& A) {
int N = A.size();
map<int,int> dp[N+1];
int ans = 1;
for(int i=0;i<N;i++){
for(int j=0;j<i;j++){
int t = A[i] - A[j];
dp[i][t] = dp[j][t] + 1;
ans = max(ans,dp[i][t]+1);
}
}
return ans;
}
};
本文介绍了一种使用动态规划算法解决最长等差数列子序列问题的方法。通过空间压缩技巧,利用map数据结构存储每个元素作为结尾且差值为j的最长等差子序列长度,实现了高效求解。
686

被折叠的 条评论
为什么被折叠?



