算法 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;
    }
};
相关推荐
hanlin033 小时前
刷题笔记:力扣第32题-最长有效括号
笔记·算法·leetcode
All for pursuit.3 小时前
【动态规划-21】312.戳气球
数据结构·c++·算法·leetcode·动态规划
碧海银沙音频科技研究院5 小时前
基于炬芯ATS3089X自研AEC声学回声消除算法
算法
通问AI6 小时前
在两台 Mac Studio 上跑 800B 模型:MLX + RDMA over Thunderbolt 实测与四道门选型法
算法
ZywOo6236 小时前
《算法竞赛进阶指南》0x03 前缀和与差分
算法
Scintilla_y6 小时前
DAY2 滑动窗口
算法·leetcode·散列表
lvwangshu6 小时前
笛卡尔树
算法·图论
026d236 小时前
状态信号只知“其然”不知“其所以然”:变工况机械故障诊断的物理盲区
算法
姜鱼问生7 小时前
备份和服务器在同一台机器上,等于没备份
算法·架构
姜鱼问生7 小时前
别再 chmod 777 了,用 ACL 给它开一扇窗
后端·算法·架构