算法训练day56leetcode300.最长递增子序列674最长连续递增序列

part13leetcode300.最长递增子序列674最长连续递增序列 718最长重复子数组

300. 最长递增子序列

本题最关键的是要想到dp[i]由哪些状态可以推出来,并取最大值,那么很自然就能想到递推公式:dp[i] = max(dp[i], dp[j] + 1);

#include <iostream>
#include <vector>

class Solution {
public:
    int lengthOfLIS(std:: vector<int>& nums) {
        std::vector<int> dp(nums.size(), 1);
        int max = 1;
        for (int i = 1; i < nums.size(); i++) {
            for (int j = 0; j < i; j++) {
                if (nums[i] > nums[j]) {
                    dp[i] = std::max(dp[i], dp[j] + 1);
                }
            }
            max = std::max(max, dp[i]);
        }
        //打印dp数组
        // for(int i: dp) {
        //     std::cout << i << ' ';
        // }
        return max;
    }
};

int main() {
    std::vector<int> nums = {10,9,2,5,3,7,101,18};
    Solution sol;
    int res = sol.lengthOfLIS(nums);
    std::cout <<std::endl;

    std::cout << "res:" << res << std::endl;
    return 0;
}

674. 最长连续递增序列

因为本题要求连续递增子序列,所以就只要比较nums[i]与nums[i - 1],而不用去比较nums[j]与nums[i] (j是在0到i之间遍历)。

既然不用j了,那么也不用两层for循环,本题一层for循环就行,比较nums[i] 和 nums[i - 1]。

#include <iostream>
#include <vector>

class Solution {
public:
    int findLengthOfLCIS(std::vector<int>& nums) {
        std::vector<int> dp(nums.size(), 1);
        int max = 1;
        for (int i = 1; i < nums.size(); i ++) {
            if(nums[i] > nums[i - 1]) {
                dp[i] = dp[i - 1] + 1;
            }
            max = std::max(max, dp[i]);
        }
        //print dp
        // for (int i : dp) {
        //     std::cout << i << ' ' ;
        // }
        return max;
    }
};

int main() {
    Solution sol;
    std::vector<int> nums = {1, 2,3 ,5,2,4,6,8,7};
    int res = sol.findLengthOfLCIS(nums);
    std::cout << res << std::endl;
    return 0;
}

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-03 11:16:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-03 11:16:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-03 11:16:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-03 11:16:02       20 阅读

热门阅读

  1. RuoYi单体版Table行内编辑

    2024-04-03 11:16:02       16 阅读
  2. 研究应用推广开源项目——提高软件技术的途径

    2024-04-03 11:16:02       15 阅读
  3. LTP测试工具

    2024-04-03 11:16:02       14 阅读
  4. 对seata的seata.tx-service-group理解

    2024-04-03 11:16:02       12 阅读
  5. c# 如何调用指定文件夹里面的动态库dll

    2024-04-03 11:16:02       14 阅读
  6. css设置宽高等比 设置和宽度一样的高度

    2024-04-03 11:16:02       15 阅读