当前位置: 代码迷 >> 综合 >> leetcode 1027:Longest Arithmetic Sequence
  详细解决方案

leetcode 1027:Longest Arithmetic Sequence

热度:65   发布时间:2024-01-16 17:55:52.0

leetcode 1027:Longest Arithmetic Sequence

题意:给你一个数组A,求这个数组子序列中中最长等差序列,返回长度。

数组长度是[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);

代码:

class Solution {
public:int longestArithSeqLength(vector<int>& A) {vector<map<int,int>>dp(2002);for (int i = 0; i < A.size(); i++)for (int j = i+1; j < A.size();j++)dp[i][A[j] - A[i]] = 1;int ans = 0;for (int i = 1; i < A.size(); i++){for (int j = 0; j < i; j++){if (dp[j][A[i] - A[j]] != 0){dp[i][A[i] - A[j]] = max(dp[i][A[i] - A[j]],dp[j][A[i]-A[j]]+1);ans = max(ans, dp[i][A[i] - A[j]]);}}}return ans;}
};

 

  相关解决方案