算法 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;
    }
};
相关推荐
AndrewHZ12 小时前
【AI黑话日日新】什么是AI智能体?
人工智能·算法·语言模型·大模型·llm·ai智能体
wWYy.12 小时前
算法:二叉树最大路径和
数据结构·算法
葱明撅腚12 小时前
利用Python挖掘城市数据
python·算法·gis·聚类
We་ct12 小时前
LeetCode 36. 有效的数独:Set实现哈希表最优解
前端·算法·leetcode·typescript·散列表
weixin_3954489112 小时前
main.c_cursor_0129
前端·网络·算法
CS创新实验室12 小时前
《计算机网络》深入学:路由算法与路径选择
网络·计算机网络·算法
一条大祥脚12 小时前
ABC357 基环树dp|懒标记线段树
数据结构·算法·图论
tod11312 小时前
力扣高频 SQL 50 题阶段总结(四)
开发语言·数据库·sql·算法·leetcode
naruto_lnq12 小时前
C++中的桥接模式
开发语言·c++·算法
苦藤新鸡12 小时前
50.腐烂的橘子
数据结构·算法