题解 | #最长上升子序列(一)#
最长上升子序列(一)
https://www.nowcoder.com/practice/5f65ccbb025240bd8458eb6479c2612e
import java.util.Arrays; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] arr = new int[n]; for (int i = 0; i != n; ++i) { arr[i] = in.nextInt(); } int[] len = new int[n]; // len[i]是以arr[i]结尾的子序列的最大长度 Arrays.fill(len, 1); int result = 1; for (int i = 0; i != n; ++i) { for (int j = 0; j != i; ++j) { // j 一定小于i if (arr[i] > arr[j]) { len[i] = Math.max(len[i], len[j] + 1); } } result = Math.max(len[i], result); } System.out.println(result); } }