leetcode 1027. 最长等差数列

Posted ljy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 1027. 最长等差数列相关的知识,希望对你有一定的参考价值。

题意:求最长等差序列的长度,数组长度是[0,2000],数值范围是[0,10000]。

 

思路:简单DP吧。dp[i][j]表示的是以第i个数结尾,差是j的最大长度。

dp[i][A[i] - A[j]] = max(dp[i][A[i] - A[j]],dp[j][A[i]-A[j]]+1);

 

技术图片
 1 class Solution {
 2 public:
 3     int longestArithSeqLength(vector<int>& A) {
 4         vector<unordered_map<int,int>>dp(2002);
 5         for(int i=0;i<A.size();i++){
 6             for(int j=i+1;j<A.size();j++){
 7                 dp[i][A[j]-A[i]]=1;
 8             }
 9         }
10         int ans=0;
11         for(int i=1;i<A.size();i++){
12             for(int j=0;j<i;j++){
13                 if(dp[j][A[i]-A[j]]!=0){
14                     dp[i][A[i] - A[j]] = max(dp[i][A[i] - A[j]],dp[j][A[i]-A[j]]+1);
15                     ans = max(ans, dp[i][A[i] - A[j]]);
16                 }
17             }
18         }
19         return ans;
20     }
21 };
View Code

以上是关于leetcode 1027. 最长等差数列的主要内容,如果未能解决你的问题,请参考以下文章

leetcode打卡——等差数列题目(LIS变式)——1218. 最长定差子序列

LeetCode 1218最长定差子序列[Map 动态规划] HERODING的LeetCode之路

LeetCode 1027. Longest Arithmetic Sequence

[leetcode 周赛 157] 1218 最长定差子序列

LEETCODE 003 找出一个字符串中最长的无重复片段

[动态规划] leetcode 1027 Longest Arithmetic Sequence