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

最长递增子序列-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.dtcms.com/a/333457.html

相关文章:

  • Vue 侦听器(watch 与 watchEffect)全解析1
  • 【161页PPT】智慧方案企业数字化转型概述(课件)(附下载方式)
  • pcl法线估计的踩坑
  • 【GPT入门】第47课 大模型量化中 float32/float16/uint8/int4 的区别解析:从位数到应用场景
  • 《P1194 买礼物》
  • PyTorch的安装-CPU版本或者GPU安装有什么区别吗
  • 口播数字人免费API调用方案
  • Docker的相关知识探究详解
  • 【功能更新】“弹性互联网”正式上线Fusion WAN平台
  • Oracle按照特定列值排序和C#统计特定列值的所有行
  • 数据结构:N叉树 (N-ary Tree)
  • 【部署K8S集群】 1、安装前环境准备配置
  • Deepoc具身智能模型如何重塑康复辅助设备
  • Java中MybatisPlus使用多线程多数据源失效
  • 集成电路学习:什么是Image Segmentation图像分割
  • 功能组和功能组状态的概念关系和区别
  • java16学习笔记-Vector API
  • oracle数据库初始化
  • 共探头部设计|安贝斯携手武汉科创协会x深钣协“湖北行”,链动D+M小镇的华中范式
  • Linux软件编程-进程(2)及线程(1)
  • 快速设计简易嵌入式操作系统(5):贴近实际场景,访问多外设,进一步完善程序
  • WPF 监控CPU、内存性能
  • python math数学运算模块
  • 【AI论文】Story2Board:一种无需训练的富有表现力故事板生成方法
  • Numerical Difference between vLLM logprobs and huggingface logprobs
  • windows下hashcat使用gpu破解execl打开密码
  • 深入Amazon DynamoDB:高效、无缝的数据存储解决方案
  • 项目生命周期
  • Python爬虫大师课:HTTP协议深度解析与工业级请求封装
  • k8s环境使用Operator部署Seaweedfs集群(一)