快手工程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); } }