classSolution{public:intlongestArithSeqLength(vector<int>&nums){constintn=nums.size();intans=0;// dp[i][k] := length of the longest arithmetic subseq ofnums// nums[0..i] with k = diff + 500vector<vector<int>>dp(n,vector<int>(1001));for(inti=0;i<n;++i)for(intj=0;j<i;++j){constintk=nums[i]-nums[j]+500;dp[i][k]=max(2,dp[j][k]+1);ans=max(ans,dp[i][k]);}returnans;}};
classSolution{publicintlongestArithSeqLength(int[]nums){finalintn=nums.length;intans=0;// dp[i][k] := length of the longest arithmetic subseq ofnums// nums[0..i] with k = diff + 500int[][]dp=newint[n][1001];for(inti=0;i<n;++i)for(intj=0;j<i;++j){finalintk=nums[i]-nums[j]+500;dp[i][k]=Math.max(2,dp[j][k]+1);ans=Math.max(ans,dp[i][k]);}returnans;}}
classSolution:deflongestArithSeqLength(self,nums:List[int])->int:n=len(nums)ans=0# dp[i][k] := length of the longest arithmetic subseq ofnums# nums[0..i] with k = diff + 500dp=[[0]*1001for_inrange(n)]foriinrange(n):forjinrange(i):k=nums[i]-nums[j]+500dp[i][k]=max(2,dp[j][k]+1)ans=max(ans,dp[i][k])returnans