class Solution {
public:
int longestArithSeqLength(vector<int>& nums) {
int n = nums.size();
int f[n][1001]; //横坐标表示第i个数,纵坐标表示当前数与其他它前面数的公差是多少,f[i][k]表示的该公差的个数
memset(f , 0 ,sizeof(f)); //数组初始化
int ans = 0;
for(int i = 0 ; i<n ; i++)
{
for(int j = 0 ; j <i ; j ++)
{
int k = nums[i] - nums[j] + 500;//当前数与前面数的公差为多少
//f[i][k] = max(f[i][k],f[j][k]+1); f[i][j]恒等等于0
f[i][k] = f[j][k] + 1; // 表示以 nums[i]nums[i] 结尾且公差为 jj 的等差数列的最大长度。
ans = max(f[i][k],ans);
}
}
return ans+1 ;
}
};
1027. 最长等差数列-动态规划
于 2023-04-22 22:29:08 首次发布