0
点赞
收藏
分享

微信扫一扫

Java实现给定一个无序的整数数组,找到其中最长上升子序列的长度。


输入:​[10,9,2,5,3,7,101,18] ​输出: 4 解释: 最长的上升子序列是 ​​[2,3,7,101],​​​它的长度是 ​​4​

 思路非常简单哈:

1 首先开辟一个新数组 ,长度等于nums     //用来存储没一个值得最大上升子序列数目

2 首先把新数组的每一个值赋值为1 ,//最小上升子序列是他自己  也就是1

3 遍历i    i前面的如果有比他小的,记录下 更新到新数组中+1,  如果小于前面的子序列长度, 那么取前面最长的子序列

4 最后返回新数组中最大值就好了     也可以放到第2个for循环中, 不断更新最大值  最后直接输出了 

class Solution {
public int lengthOfLIS(int[] nums) {
if(nums.length==0){
return 0;
}
int[] dp=new int[nums.length];
Arrays.fill(dp,1);
int result=1;
for(int i=0;i<nums.length;i++){
for(int j=0;j<i;j++){
if(nums[j]<nums[i]){
dp[i]=Math.max(dp[i],dp[j]+1);
}
result=Math.max(result,dp[i]);
}
}
return result;
}
}

      By CaesarChang                 

      ~关注我  带你看更多精品技术和面试必备


Java实现给定一个无序的整数数组,找到其中最长上升子序列的长度。_子序列

 

举报

相关推荐

0 条评论