具体思想:
还是最长子序列问题,老生常谈;
唯一不同的是O(n2)爆搜的时候需要进行map保存;
据说和873题同思路;
具体代码:
class Solution {
public:
int longestArithSeqLength(vector<int>& nums) {
int n=nums.size();
int ret=1;
vector<unordered_map<int, int>>dp(n);
for(int i=1;i<n;i++){
for(int j=0;j<i;j++){
int gap=nums[i]-nums[j];
if(dp[j].count(gap)){
int maxn=dp[j][gap]+1;
if(dp[i].count(gap)){
maxn=max(dp[i][gap],maxn);
}
dp[i][gap]=maxn;
}else{
dp[i][gap]=2;
}
ret=max(ret,dp[i][gap]);
}
}
return ret;
}
};