首页 > 其他 > 详细

leetcode 1027. 最长等差数列

时间:2019-10-27 21:21:59      阅读:109      评论:0      收藏:0      [点我收藏+]

题意:求最长等差序列的长度,数组长度是[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. 最长等差数列

原文:https://www.cnblogs.com/ljy08163268/p/11748793.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!