• leetcode300. Longest Increasing Subsequence 最长递增子序列 、674. Longest Continuous Increasing Subsequence


     Longest Increasing Subsequence 最长递增子序列

     子序列不是数组中连续的数。

    dp表达的意思是以i结尾的最长子序列,而不是前i个数字的最长子序列。

    初始化是dp所有的都为1,最终的结果是求dp所有的数值的最大值。

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

    674. Longest Continuous Increasing Subsequence

    相对于最长递增子序列来说,这个题目更加简单,只需要比较前一个数字就好,不用把前面的数字都比较完。因为如果比前一个小,直接就无法完成递增,只能保持当前的值1;如果比前一个数字大,其实前一个数字就已经计算了之前递增的个数,直接加1就好了

    class Solution {
    public:
        int findLengthOfLCIS(vector<int>& nums) {
            if(nums.empty())
                return 0;
            int length = nums.size();
            vector<int> dp(length,1);
            for(int i = 1;i < length;i++){
                if(nums[i] > nums[i-1])
                    dp[i] = dp[i-1] + 1;
            }
            int max_num = 1;
            for(int i = 0;i < length;i++)
                max_num = max(max_num,dp[i]);
            return max_num;
        }
    };
  • 相关阅读:
    springboot整合springmvc原理
    springboot Thymeleaf
    springboot 首页处理
    springboot整合Druid
    springboot 整合JDBC
    CentOS安装Mysql
    springboot 多环境切换
    springboot JSR303数据校验
    【转载】WEB架构师成长之路
    一些想法
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/9567417.html
Copyright © 2020-2023  润新知