题解 | 最长上升子序列(一)
最长上升子序列(一)
https://www.nowcoder.com/practice/5f65ccbb025240bd8458eb6479c2612e
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] nums = new int[n]; for(int i = 0;i < n ;i++){ nums[i] = in.nextInt(); } System.out.println(run(n,nums)); } public static int run(int n,int[] nums){ if(n == 0 || n == 1) return 0; int[] dp = new int[n]; int maxLen = 1; for(int i = 0 ;i < n;i++){ dp[i] = 1; } for (int i = 1; i < n; i++) { for (int j = 0; j < i; j++) { if (nums[j] < nums[i]) { dp[i] = Math.max(dp[i], dp[j] + 1); } } maxLen = Math.max(maxLen, dp[i]); // 更新最大长度 } return maxLen; } }