题解 | #最长上升子序列(一)#
最长上升子序列(一)
https://www.nowcoder.com/practice/5f65ccbb025240bd8458eb6479c2612e
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StreamTokenizer; import java.util.Arrays; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StreamTokenizer st = new StreamTokenizer(br); st.nextToken(); int n = (int)st.nval; if (n == 0) { System.out.println(0); } else if (n == 1) { System.out.println(1); } else { long[] arr = new long[n]; for (int i = 0; i < n; i++) { st.nextToken(); arr[i] = (long)st.nval; } int subMaxLen = 0; int[] len = new int[n]; Arrays.fill(len, 1); for (int i = 1; i < n; i++) { for (int j = 0; j < i; j++) { if (arr[i] > arr[j]) { len[i] = Math.max(len[i], len[j] + 1); } } subMaxLen = Math.max(subMaxLen, len[i]); } System.out.println(subMaxLen); } } }