package LongestIncrSub; import java.util.Arrays; import java.util.HashSet; /** * 功能描述 * 最长递增子序列 */ public class Main { public static void getLongestIncrSub(int[] arr) { int len = arr.length; int[] dp = new int[len]; int[] res = new int[len]; Arrays.fill(dp, 1); Arrays.fill(res, 0); int maxNum = arr[0]; int maxDp = 0; for (int i = 0; i < len; i++) { maxNum = Math.max(maxNum, arr[i]); for (int j = i; j >= 0; j--) { if (arr[i] > arr[j]) { dp[i] = 1 + dp[j]; res[i] = arr[j]; maxDp = Math.max(maxDp, dp[i]); break; } } } HashSet<Integer> resSet = new HashSet<>(); for (int redI : res) { if (redI == 0) { continue; } resSet.add(redI); } resSet.add(maxNum); System.out.println(Arrays.toString(dp)); System.out.println(maxDp); System.out.println(Arrays.toString(res)); System.out.println(resSet); } public static void main(String[] args) { int[] arr = {2, 1, 5, 3, 6, 4, 8, 9, 7}; getLongestIncrSub(arr); } }
最长递增子序列
最新推荐文章于 2024-05-07 22:46:55 发布