美文网首页
300.最长上升子序列的长度

300.最长上升子序列的长度

作者: HamletSunS | 来源:发表于2019-10-23 23:36 被阅读0次

思路:
动态规划

思路解释:
1.这里的动态规划的应用与以往不同,以往是直接求结果,而这里采用的方案是dp[i]代表从[0..i]中去选择,并且一定选中i号元素。
2.之所以这样设计是因为这样解题的逻辑会很简单,只需要比较一下当前数字比之前大的数字就行,比之前大,那么长度就一定比之前的多1,依次类推。
3.要注意的是因为返回的结果是选中i后从[0..i]的最长上升子序列的长度,并不是最终结果,所以最终结果还要遍历一遍

代码实现:

class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        int n=nums.size();
        if(n<2)
            return n;
        vector<int> dp(n,1);
        for(int i=1;i<n;i++){
            for(int j=0;j<=i;j++)
                if(nums[i]>nums[j])
                    dp[i]=max(dp[j]+1,dp[i]);
        }
        
        int ret=1;
        for(int i=0;i<n;i++)
            if(dp[i]>ret)
                ret=dp[i];
        return ret;
    }
};

相关文章

  • leetcode实战——300.最长上升子序列(动态规划+分治法

    300. 最长上升子序列 题目 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9...

  • leetcode 动态规划

    70. 爬楼梯 5. 最长回文子串 300. 最长上升子序列

  • LintCode 最长上升子序列

    给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明 最长上升子序列的定义: 最长上升子序列问...

  • LintCode 最长上升子序列

    题目 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明最长上升子序列的定义:最长上升子序列...

  • LintCode 最长上升子序列

    题目 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。说明最长上升子序列的定义:最长上升子序列问...

  • 76. 最长上升子序列

    描述 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明 最长上升子序列的定义: 最长上升子...

  • 76. 最长上升子序列

    给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。说明最长上升子序列的定义:最长上升子序列问题是在...

  • lintcode 最长上升子序列

    给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。说明最长上升子序列的定义:最长上升子序列问题是在...

  • LeetCode 300. 最长上升子序列(Longest In

    300. 最长上升子序列 Python3 实现 动态规划 维护子序列+二分查找 GitHub链接:https://...

  • 300.最长上升子序列的长度

    思路:动态规划 思路解释:1.这里的动态规划的应用与以往不同,以往是直接求结果,而这里采用的方案是dp[i]代表从...

网友评论

      本文标题:300.最长上升子序列的长度

      本文链接:https://www.haomeiwen.com/subject/krzductx.html