题目
思路
- 很自然想到要记录比当前值小的有序个数,所以使用dp[i]来记录表示nums[0]到nums[i-1]中比nums[i]小且有序的个数,如何确保dp[i]记录的是有序的最大值,我们需要遍历j取0到i-1中nums[j]比nums[i]小且dp[j]+1为最大的值。
代码
最长递增子序列public int lengthOfLIS(int[] nums) {int len = nums.length;if (len <= 0) return len;//dp[i]表示0到i-1比nums[i]小的有序个数int[] dp = new int[len];int max = 0;for (int i = 1; i < len; i++) {for (int j = 0; j < i; j++) {if (nums[i] > nums[j]) {dp[i] = Math.max(dp[j] + 1, dp[i]);}}max = Math.max(max, dp[i]);}return max + 1;}
