当前位置: 首页 > ai >正文

最长递增子序列-dp问题+二分优化

300. 最长递增子序列 - 力扣(LeetCode)

Solution

#include<iostream>
#include<vector>
using namespace std;class Solution {
public:const int minf = -1e9;//普通dp做法,时间复杂度O(n^2)int lengthOfLIS1(vector<int>& nums) {int n = nums.size();vector<int>dp(n + 1, 1);int ans = 1;//dp(i)表示以第i个字符结尾的最长递增子序列的长度for (int i = 1; i < n; ++i) {for (int j = 0; j < i; ++j) {if (nums[j] < nums[i]) dp[i] = max(dp[i], dp[j] + 1);}ans = max(ans, dp[i]);}return ans;}//优化的dp做法,时间复杂度O(n*logn)//有点难理解,ends数组动态维护了当前长度为各个值的递增子序列的最小末尾值,//当来到一个新的数的时候,如何才能知道以这个数结尾的最长递增子序列的长度是多少,//这样就可以去ends数组里面寻找,寻找一个和该数字最接近的数,说明可以作为该数字的前一个int lengthOfLIS(vector<int>& nums) {int n = nums.size();vector<int>dp(n + 1, 1);vector<int>ends;//ends(i)表示长度为i+1的递增子序列的最小结尾值ends.push_back(nums[0]);for (int i = 1; i < n; ++i) {int cur = nums[i];int index = bs1(ends, cur);if (index == -1) {ends.push_back(cur);}else {ends[index] = cur;}}return ends.size();}//二分查找数组中第一个大于等于v的数的下标,没找到则返回-1int bs1(vector<int>& nums, int v) {int l = 0, r = nums.size() - 1;int ans = -1;while (l <= r) {int mid = (l + r) >> 1;if (nums[mid]>=v) {ans = mid;r = mid - 1;}else {l = mid + 1;}}return ans;}
};
int main() {return 0;
}

http://www.xdnf.cn/news/17834.html

相关文章:

  • 金融业务安全增强方案:国密SM4/SM3加密+硬件加密机HSM+动态密钥管理+ShardingSphere加密
  • 【职场】-啥叫诚实
  • es7.x的客户端连接api以及Respository与template的区别
  • 基本电子元件:碳膜电阻器
  • pytorch 数据预处理,加载,训练,可视化流程
  • Ubuntu DNS 综合配置与排查指南
  • 研究学习3DGS的顺序
  • Golang信号处理实战
  • Linux操作系统从入门到实战(二十三)详细讲解进程虚拟地址空间
  • Canal 技术解析与实践指南
  • 【Spring框架】SpringAOP
  • Vue3从入门到精通: 4.4 复杂状态管理模式与架构设计
  • Python爬虫大师课:HTTP协议深度解析与工业级请求封装
  • dockerfile自定义镜像,乌班图版
  • MC0439符号统计
  • 智能家居【home assistant】(一)-在Windows电脑上运行home assistant
  • Webapi发布后IIS超时(.net8.0)
  • 什么是可信空间的全域节点、区域节点、业务节点?
  • Claude Opus 4.1深度解析:抢先GPT5发布,AI编程之王主动出击?
  • (Arxiv-2025)Stand-In:一种轻量化、即插即用的身份控制方法用于视频生成
  • 微软自曝Win 11严重漏洞:可导致全盘数据丢失
  • 简单使用 TypeScript 或 JavaScript 创建并发布 npm 插件
  • 搭建前端开发环境 安装nvm nodejs pnpm 配置环境变量
  • 大华相机RTSP无法正常拉流问题分析与解决
  • Web 安全之 Cookie Bomb 攻击详解
  • Prometheus 监控 Kubernetes Cluster 最新极简教程
  • USENIX Security ‘24 Fall Accepted Papers (1)
  • 使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期
  • 【微服务】.NET8对接ElasticSearch
  • [Linux]双网卡 CentOS 系统中指定网络请求走特定网卡的配置方法