【贪心算法第五弹——300.最长递增子序列】

目录

1.题目解析

题目来源

测试用例

2.算法原理

3.实战代码

代码解析


注意本题还有一种动态规划的解决方法,贪心的方法就是从动态规划的方法总结而来,各位可以移步博主的另一篇博客先了解一下: 动态规划-子序列问题------300.长递增子序列

1.题目解析

题目来源

|-----------------------------------------------------------------------------------------------------------|
| 300.最长递增子序列------力扣 |

测试用例

2.算法原理

贪心思路

具体算法

此时的时间复杂度是O(N^2),与动态规划一样,那么我们就需要继续优化,这里插入dp表后判断插入位置可以使用二分查找来进行优化,优化后时间复杂度就是O(N*logN)

3.实战代码

cpp 复制代码
class Solution 
{
public:
    int lengthOfLIS(vector<int>& nums) 
    {
        int n = nums.size();
        vector<int> dp;
        dp.push_back(nums[0]);
        for(int i = 1;i < n;i++)
        {
            if(nums[i] > dp.back())
            {
                dp.push_back(nums[i]);
            }
            else
            {
                int left = 0,right = dp.size();
                while(left < right)
                {
                    int mid = (left + right) >> 1;
                    if(nums[i] > dp[mid])  left = mid + 1;
                    else right = mid;
                }
                dp[left] = nums[i];
            }
        }
        return dp.size();
    }
};

代码解析

相关推荐
网络与设备以及操作系统学习使用者2 分钟前
vi与vim在openEuler中的差异及应用
linux·运维·网络·学习·vim
alphaTao10 分钟前
LeetCode 每日一题 2026/5/18-2026/5/24
python·leetcode
徐安安_ye112 分钟前
FlashAttention学习路线:从调API到写算子,你该走哪条路
python·学习
水云桐程序员13 分钟前
学习 React Native(简称 RN)的路径
学习·react native·react.js
lizhihai_9914 分钟前
股市学习心得-技术指标学习(布林线+MACD)
大数据·人工智能·学习
汉克老师31 分钟前
GESP6级C++考试语法知识(二十七、广度优先搜索(二、二维BFS))
c++·算法·图论·宽度优先·广度优先搜索·gesp6级·gesp六级
此生决int31 分钟前
算法从入门到精通——位运算
数据结构·c++·算法·蓝桥杯
春栀怡铃声32 分钟前
【C++修仙录02】筑基篇:vector 使用
开发语言·c++·算法
Loli_Wolf37 分钟前
AI 原生研发闭环:从提需到线上监测,再自动回到提需
人工智能·深度学习·算法·microsoft·ai·ai编程·harness
丁劲犇37 分钟前
使用TraeAI开发Web页面测试MSYS2 ucrt64 Qt MCP服务器
服务器·前端·c++·qt·mcp