算法 day 42

最长递增子序列

这题不难,看一遍就懂了。

cpp 复制代码
class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        if (nums.size() <= 1) return nums.size();
        vector<int> dp(nums.size(), 1);
        int result = 0;
        for (int i = 1; i < nums.size(); i++) {
            for (int j = 0; j < i; j++) {
                if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);
            }
            if (dp[i] > result) result = dp[i]; // 取长的子序列
        }
        return result;
    }
};

最长连续递增序列

一开始想着 这题用双指针或者贪心应该都可以的,也大致思考了一下,明天时间会多一点,会再完善一下这道题的dp,和可能的其他解法。

cpp 复制代码
class Solution {
public:
    int findLengthOfLCIS(vector<int>& nums) {
        if (nums.size() == 0) return 0;
        int result = 1;
        vector<int> dp(nums.size() ,1);
        for (int i = 1; i < nums.size(); i++) {
            if (nums[i] > nums[i - 1]) { // 连续记录
                dp[i] = dp[i - 1] + 1;
            }
            if (dp[i] > result) result = dp[i];
        }
        return result;
    }
};

最长重复子数组

这题不画图真就难度上升一个档次,画图对于理解的帮助可以说不只是一点点。另外,在视频里提到,关于初始化的问题,和什么时候输出dp的哪一个数字,也就是"答案存储在dp数组的哪里",每个题都需要具体分析。这个和dp初始化数字一样值得考虑和理解,不是一知半解迷迷糊糊就初始0,或者输出二维数组的右下角就完事了。二维数组的右下角,不一定存的是正确答案。

cpp 复制代码
class Solution {
public:
    int findLength(vector<int>& nums1, vector<int>& nums2) {
        vector<vector<int>> dp (nums1.size() + 1, vector<int>(nums2.size() + 1, 0));
        int result = 0;
        for (int i = 1; i <= nums1.size(); i++) {
            for (int j = 1; j <= nums2.size(); j++) {
                if (nums1[i - 1] == nums2[j - 1]) {
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }
                if (dp[i][j] > result) result = dp[i][j];
            }
        }
        return result;
    }
};
相关推荐
专注API从业者12 分钟前
用 Open Claw + 淘宝商品接口,快速实现电商商品监控与智能选品(附完整代码)
大数据·前端·数据结构·数据库
♡すぎ♡14 分钟前
ShaderLab:PBR+IBL(ShaderToy Translation)
算法·计算机图形学·着色器·pbr·ibl
Shadow(⊙o⊙)16 分钟前
前缀和:和可被K整除的子数组(normal)
数据结构·c++·算法
世纪末的小黑20 分钟前
【LeetCode自用】LeetCode自用记录贴,题目一:两数之和
数据结构·算法·leetcode
兰令水21 分钟前
topcode【随机算法题】【2026.5.22打卡-java版本】
java·算法·leetcode
努力努力再努力wz27 分钟前
【Redis入门系列】:Redis 内部编码机制与 String 深度解析:SDS 底层实现、三种编码与核心命令详解
c语言·开发语言·数据结构·数据库·c++·redis·缓存
Brilliantwxx30 分钟前
【C++】 认识STL set与map(基础接口+题目OJ运用)
开发语言·数据结构·c++·笔记·算法
05候补工程师32 分钟前
【线性代数】核心考点复习笔记:二次型配方法、施密特正交化步骤与特征值经典题型详解
经验分享·笔记·线性代数·考研·算法
Deep-w35 分钟前
【MATLAB】基于遗传算法的直流电机 PI 控制器参数优化研究
开发语言·算法·matlab
海清河晏11137 分钟前
数据结构 | 循环队列
数据结构·c++·visual studio