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 };
以上是关于leetcode 1027. 最长等差数列的主要内容,如果未能解决你的问题,请参考以下文章
leetcode打卡——等差数列题目(LIS变式)——1218. 最长定差子序列
LeetCode 1218最长定差子序列[Map 动态规划] HERODING的LeetCode之路
LeetCode 1027. Longest Arithmetic Sequence