leetcode 1027:最长等差子序列
题目描述:该题与最长定差子序列类似,只不过等差序列的差值不确定
解法1(优先选择该解法):
public int longestArithSeqLength(int[] A) {
int step = 0;
int[][] dp = new int[20001][20001];
int maxlen = 0;
for(int i = 1; i < A.length; i++) {
for (int j = 0; j < i; j++) {
step = A[i]-A[j]+10000;
dp[A[i]+10000][step] = dp[A[i]+10000-step+10000][step]+1;
maxlen = Math.max(maxlen, dp[A[i]+10000][step]);
}
}
return maxlen+1;
}
解法2:
public int longestArithSeqLength2(int[] A) {
HashMap<HashMap<Integer,Integer>,Integer> lenMap = new HashMap<HashMap<Integer,Integer>, Integer>();
int maxlen = 0;
for (int i = 1; i < A.length; i++) {
for (int j = 0; j < i; j++) {
HashMap<Integer,Integer> stepMap = new HashMap<Integer, Integer>()