当前位置: 首页 > 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.lryc.cn/news/622062.html

相关文章:

  • 智能巡检技术浅析
  • 最新chrome浏览器elasticsearch-head无法安装使用问题
  • 牛市暴跌后什么时候进入好
  • C++ 调试报错 常量中有换行符
  • NAS播放器的新星,一站式全平台媒体库管理工具『Cinemore』体验
  • 高通vendor app访问文件
  • 前端css学习笔记6:盒子模型
  • IP生意的天花板更高了吗?
  • 多路混音声音播放芯片型号推荐
  • Microsoft Visual Studio常用快捷键和Windows系统常用快捷键的整理
  • 深入解析五大通信协议:TCP、UDP、HTTP_HTTPS、WebSocket与GRPC
  • 【Leetcode hot 100】53.最大子数组和
  • 异步任务执行顺序
  • DataGear:一个免费开源的国产数据可视化分析平台
  • 经典BT的连接过程
  • 归并排序和统计排序
  • 智能工厂生产监控大屏-vue纯前端静态页面练习
  • AI智能体在软件测试中的应用与未来趋势
  • 开疆智能Ethernet转ModbusTCP网关连接测联无纸记录仪配置案例
  • python-pycharm切换python各种版本的环境与安装python各种版本的环境(pypi轮子下载)
  • C++第二十课:快递运费计算器 / 黑白配+石头剪刀布小游戏
  • SAP ALV导出excel 报 XML 错误的 /xl/sharedStrings.xml
  • 2025.08.09 江门两日游记
  • 4.2 寻址方式 (答案见原书 P341)
  • LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。
  • 硬件实现webrtc的编解码
  • 从前端框架到GIS开发系列课程(26)在mapbox中实现地球自转效果,并添加点击事件增强地图交互性
  • 【自动化运维神器Ansible】Ansible算术运算符详解:实现配置文件的动态计算
  • MS5905P 一款 12bit 分辨率的旋变数字转换器
  • GaussDB 常用数值类型