
解题步骤:




参考代码:
cpp
class Solution {
public:
int longestArithSeqLength(vector<int>& nums) {
int n=nums.size();
int ret=2;
unordered_map<int,int> hash;
//这里可以先把nums[0]存进哈希表中,方便后面i从1开始遍历
hash[nums[0]]=0;
vector<vector<int>> dp(n,vector<int>(n,2));
for(int i=1;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
int b=nums[i];
int c=nums[j];
int a=2*b-c;
if(hash.count(a))
{
dp[i][j]=dp[hash[a]][i]+1;
}
ret=max(ret,dp[i][j]);
}
//第i行填完之后记得把这个nums[i]和i绑定放进哈希表中
hash[nums[i]]=i;
}
return ret;
}
};
你学会了吗???