文章目录
-
- 原题题目
- 代码实现(首刷小部分看解大部分自解)
- 代码实现(二刷自解 DAY185 C++)
原题题目
代码实现(首刷小部分看解大部分自解)
int longestArithSeqLength(int* A, int ASize){
int* dp[ASize],i,j,max = 0,temp;for(i=0;i<ASize;i++){
dp[i] = (int*)malloc(sizeof(int) * 20001);memset(dp[i],0,sizeof(dp[i]));}for(i=1;i<ASize;i++){
for(j=0;j<i;j++){
temp = A[i] - A[j] + 10000;dp[i][temp] = fmax(dp[i][temp],dp[j][temp]+1);max = fmax(dp[i][temp],max); }}return max+1;
}
代码实现(二刷自解 DAY185 C++)
class Solution {
public:int longestArithSeqLength(vector<int>& nums) {
vector<vector<int>> dp(nums.size(),vector<int>(20001,0));int ret = 0;for(int i=1;i<nums.size();++i){
for(int j=i-1;j>=0;--j){
int dif = 10000+nums[i]-nums[j];dp[i][dif] = max(dp[j][dif] + 1,dp[i][dif]);ret = max(ret,dp[i][dif]);}}return ret+1;}
};