1.最长上升子序列
最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。
输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。
dp[i] 保存状态
双层循环
public int lengthOfLIS(int[] nums) {
if(nums == null || nums.length == 0) return 0;
int[] dp = new int[nums.length];
Arrays.fill(dp,1); //初始化
for(int i = 1; i < dp.length; i++){
for(int j = 0; j < i; j++){
if(nums[j] < nums[i]){
dp[i] = Math.max(dp[i], dp[j]+1); //重点,找出dp[j]+1的最大值
}
}
}
int max = 0;
for(int i = 0; i < dp.length; i++){
max = Math.max(max, dp[i]);
}
return max;
}