Leetcode300最大顺序序列个数
题目描述:
给定一个未排序的整数数组,请找到最长递增子序列的长度
示列:
输入:[10,9,2,5,3,7,101,18]输出: 4 说明:增长最长的子序列是[2,3,7,101],因此长度是4。
查找数组里面最大的顺序序列长度,当数组个数为1时最大长度为1,
当数组个数为2时如果第二数比前一个大,最大长度为2,
所以后面数据最大的长度和前面的数据有关。
使用数组dp记录,其中dp[i]表示记录数组中0到i元素中包含nums[i]元素的最大递增序列长度
public int lengthOfLIS(int[] nums) { int[] dp = new int[nums.length]; Arrays.fill(dp,1); for (int i = 0; i < nums.length; i ++){ for (int j = i - 1; j < nums.length; j ++){ if (nums[i] > nums[j]){ dp[i] = Math.max(dp[j]+1,dp[i]); } } } int ret = dp[0]; for (int i = 0; i < dp.length; i ++){ if (ret < dp[i]){ ret = dp[i]; } } return ret; }
浙公网安备 33010602011771号