快手工程B试卷最后一题
A了80%,求个牛友指点一下
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if(n <= 0) {
System.out.println(0);
return;
}
int[] array = new int[n];
for(int i = 0; i < array.length; i++) {
array[i] = sc.nextInt();
}
Arrays.sort(array);
int maxSub = array[array.length - 1] - array[0];
// dp[i][j] 表示以第i个元素结尾的序列中,以j为差值的等差数列的最长长度
int[][] dp = new int[n][maxSub + 1];
Arrays.fill(dp[0], 1);
int result = 1;
for(int i = 1; i < n; i++) {
for(int j = 0; j < i; j++) {
int d = array[i] - array[j];
dp[i][d] = dp[j][d] + 1;
if(dp[i][d] > result) {
result = dp[i][d];
}
}
}
System.out.println(result);
}
}