题目:
分析:
我的想法:A【i】【j】是 以第i个元素为结尾时,公差为j,应该设立两个,因为公差还有可能是负的。
然后每次遍历i之前的就可以啦!
代码:
class Solution {
public:
int longestArithSeqLength(vector<int>& A) {
if(A.size()==0) return 0;
if(A.size()==1) return 1;
int maxx=A[0],minn=A[0];
for(int i=0;i<A.size();i++)
{
minn=min(minn,A[i]);
maxx=max(maxx,A[i]);
}
int t=maxx-minn;
vector<int> v(t+1,1);
vector<vector<int> > v1(A.size(),v);
vector<vector<int> > v2(A.size(),v);
int ans=1;
for(int j=1;j<A.size();j++)
for(int i=0;i<j;i++)
{
int c=A[j]-A[i];
if(A[j]-A[i]>=0)
{
v1[j][c]=max(v1[j][c],v1[i][c]+1);
ans=max(ans,v1[j][c]);
}
else{
c=-c;
v2[j][c]=max(v2[j][c],v2[i][c]+1);
ans=max(ans,v2[j][c]);
}
}
return ans;
}
};