力扣300. 最长递增子序列

动态规划

  • 思路:
    • 假设 dp[i] 为前 i 个元素构成的最长递增子序列的个数,包含 nums[i];
    • 则 dp[i] 构成序列上一个元素 nums[j] 构成最长递增子序列 dp[j],则 dp[i] = dp[j] + 1;
    • 如果动态取 j ∈ [0, i - 1],则选取其中最长递增子序列值中最大的,其值 + 1 来更新 dp[i] 的值;
cpp 复制代码
class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        int size = (int)nums.size();
        if (size == 0) {
            return 0;
        }

        std::vector<int> dp(size, 0);
        for (int i = 0; i < size; ++i) {
            dp[i] = 1;
            for (int j = 0; j < i; ++j) {
                if (nums[j] < nums[i]) {
                    dp[i] = std::max(dp[i], dp[j] + 1);
                }
            }
        }

        return *std::max_element(dp.begin(), dp.end());
    }
};
相关推荐
Chase_______8 分钟前
【算法】删除子数组的最大得分 & 最多 K 个重复元素的最长子数组——不定长滑动窗口与哈希频率约束
算法·哈希算法
fie888920 分钟前
城市环境下车辆目标跟踪算法 MATLAB 实现
算法·matlab·目标跟踪
tryCbest22 分钟前
软考 - 排序算法
算法·排序算法
AKA__Zas33 分钟前
芝士算法(双指针篇 1.0)
java·算法·学习方法
吃着火锅x唱着歌35 分钟前
LeetCode 726.原子的数量
linux·算法·leetcode
君义_noip38 分钟前
CSP-S 2025 提高级 第一轮(初赛) 阅读程序(3)
c++·算法·信息学奥赛·csp-s 初赛
玛卡巴卡ldf38 分钟前
【LeetCode 手撕算法】(栈)有效括号、最小栈、字符串解码、每日温度、柱状图最大矩形
java·数据结构·算法·leetcode·力扣
happyprince43 分钟前
05-FlagEmbedding 评估模块详解
算法
wuweijianlove1 小时前
算法优化的多目标平衡与性能建模研究的技术7
算法
_深海凉_1 小时前
LeetCode热题100-两两交换链表中的节点
算法·leetcode·链表