300.最长递增子序列

news2024/12/26 11:15:07

在这里插入图片描述
在这里插入图片描述
贪心+二分查找

  • 贪心:上升子序列尽可能长,序列上升尽可能慢,每次在上升子序列后加上的那个数尽可能小
  • 数组d,长度为len的最长上升子序列,d[i]为长度为i的最长上升子序列的末尾元素最小值,起始len=1,d[1]=nums[0]
  • 数组d是递增的
  • 遍历nums,更新d和len
  • 若nums[j]>d[len],则len=len+1,d[len+1]=nums[j]
  • 否则,在d[1…len]中找满足d[i-1]<nums[j]<d[i]的下标i,并更新d[i]=nums[j]
  • 因为d是递增的,可以二分查找找到d中从右到左第一个比nums[j]小的下标pos,并更新d[pos+1]=nums[j]
  • 示例 [0,8,4,12,2,5,6]
  • len=1 d=[0]
  • len=2 d=[0,8]
  • len=2 d=[0,4]
  • len=3 d=[0,4,12]
  • len=3 d=[0,2,12]
  • len=3 d=[0,2,5]
  • len=4 d=[0,2,5,6]
  • 最终的d=[0,2,5,6],len为4
class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        int n=nums.size();
        if(n==0) return 0;
        int len=1;
        vector<int> d(n+1,0);
        d[1]=nums[0];
        
        for(int j=1;j<n;j++){
            if(nums[j]>d[len]){
                d[len+1]=nums[j];
                len=len+1;
            }else{
                int l=1,r=len,pos=0;
                while(l<=r){
                    int mid=(l+r)/2;
                    if(d[mid]<nums[j]){
                        pos=mid;
                        l=mid+1;
                    }else{
                        r=mid-1;
                    }
                }
                d[pos+1]=nums[j];
            }
        }
        return len;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1068668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python--入门

标识符 标识符由字母&#xff0c;数字&#xff0c;下划线_组成 第一个字符不能是数字&#xff0c;必须是字母或下划线 标识符区分大小写 关键字 关键字即保留字&#xff0c;定义标识符时不能使用关键字&#xff0c;python中的关键字如下图 注释 python中的单行注释用 # 多行注…

口袋参谋:0销量宝贝,如何快速获的流量曝光?

​如今的淘宝天猫&#xff0c;新品前期无销量前提下&#xff0c;是无法获得任何流量的&#xff0c;而唯一快速破零的方法&#xff1a;只有S单&#xff01; 常规的搜索S单&#xff0c;是无法找到宝贝的&#xff0c;如果使用全标题、半标题&#xff0c;直接就会触发搜索降权&…

ssm+vue的公司人力资源管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的公司人力资源管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结…

LLMs 生成式人工智能项目生命周期备忘单Generative AI Project Lifecycle Cheat Sheet

到目前为止&#xff0c;在本课程中&#xff0c;从选择模型到微调模型&#xff0c;再到将其与人类偏好对齐&#xff0c;这一切都将在您部署应用程序之前发生。为了帮助您规划生成式AI项目生命周期的各个阶段&#xff0c;这个速查表提供了每个工作阶段所需的时间和精力的一些指示…

python学习之5个让日常编码更方便简单的库

今天为大家分享 5 个让日常编码更简单的 Python 库&#xff0c;全文3900字&#xff0c;阅读15分钟。 一、sh https://github.com/amoffat/sh 如果曾经在 Python 中使用过 subprocess 库&#xff0c;那么我们很有可能对它感到失望&#xff0c;它不是最直观的库&#xff0c;可…

Centos7安装docker 和docker-compose记录(0报错顺利安装)

文章目录 前言一、docker的安装二、docker-compose的安装总结 前言 我居然没有记录过Centos7安装docker的笔记&#xff0c;真是不可思议。每次vps安装docker都要看网上的文章&#xff0c;而且都非常坑&#xff0c;方法千奇百怪&#xff0c;最后还是决定自己来记录一个完整又方…

Jupyter notebook怎么设置自动跳转问题

1.点击开始&#xff0c;就可以看到Jupyter&#xff0c;然后点击 2.结果就这样&#xff1a; 3你可以复制地址到浏览器&#xff0c;结果&#xff1a; 但是这么做很麻烦&#xff0c;所以有没有更好的办法呢&#xff1f;当然有下面就开始介绍 1.打开cmd(winr,输入cmd),输入以下命令…

第二证券:突发!A股T+0?刚刚,紧急回应!

沪深生意所急迫回应 6日&#xff0c;商场传出一个消息&#xff0c;传延伸A股生意时刻和部分票可日内T0一次。一个版本是提早至9点&#xff0c;然后下午延伸至15&#xff1a;30&#xff0c;另一个版本是上午推延至12点&#xff0c;下午延伸至16&#xff1a;00。 7日&#xff0…

TimeWise-Jira工时管理插件6.0.0发布!对比测评某知名工时插件,谁的数据处理性能更胜一筹?

近期&#xff0c;龙智自研插件TimeWise for Jira&#xff08;Jira工时管理插件&#xff09;发布了重要更新——6.0.0版本。这次升级主要针对报表性能做出了优化与提升。 对于企业级应用而言&#xff0c;具高效处理大规模数据的能力是最为关键。龙智深谙国内用户需求&#xff0…

阿里云关系型数据库RDS详细介绍PolarDB_MySQL_MariaDB_SQL Server_PostgreSQL

阿里云RDS关系型数据库大全&#xff0c;关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等&#xff0c;NoSQL数据库如Redis、Tair、Lindorm和MongoDB&#xff0c;阿里云百科分享阿里云RDS关系型数据库大全&#xff1a; 目录 阿里云RDS关系型数据库大全 …

【Axure高保真原型】自适应多行输入框

今天和大家分享自适应多行文本框的原型模板&#xff0c;我们可以在输入框里输入文字&#xff0c;随着文字的数量&#xff0c;输入框的高度也会自动调整……具体效果可以打开下方原型地址体验或者点击下方视频观看 【原型效果】 【Axure高保真原型】自适应多行输入框 【原型预览…

重装系统Win10专业版步骤和详细教程

在Windows 10专业版中&#xff0c;使用一键重装系统能够迅速恢复系统到出厂默认状态&#xff0c;以便重新开始。一键重装系统的步骤相对简单&#xff0c;但确保备份重要文件和软件是重要的一步。本文将详细介绍如何一键重装系统Win10专业版的步骤和教程&#xff0c;确保您能轻松…

智能穿戴领域,健康鞋步力宝品牌引领新商业模式发展

智能时代正在将我们带向一个从学习驱动到全面普及的新境界。这个趋势的深远影响不仅改变了我们的生活方式&#xff0c;更改变了我们对智能的理解。当今的智能穿戴&#xff0c;已经越来越成为更多人日常生活的必需品&#xff0c;不论是日常佩戴无感成为腕上伴侣&#xff0c;还是…

【Java】Scanner.nextLine() 返回空行/不起作用(吸收换行符)

解决方法直达 问题描述 使用 Java 的 Scanner 类来读取数据的时候容易遇到的一个坑是 nextLine() 莫名其妙地就无法使用了。 具体表现为&#xff1a;好像 nextLine() 没执行就直接返回空字符串了。 例如 Scanner scanner new Scanner(System.in); System.out.println(&quo…

【three.js】简介和本地部署

跟着b站大佬学习three.js&#xff0c;让你实现3d前沿技术不是梦&#xff01; 由于访问three.js官网是国外的网站&#xff0c;非常慢Three.js – JavaScript 3D Library 因此我们可以访问b站大佬在国内搭建好的本地three.js官网&#xff0c;大家访问如下链接即可&#xff0c;…

git项目删除业务代码、并清除所有提交记录,以此为基础创建出一个干净仓库、再另建一个远程代码库推上去

1、先把项目的.git文件夹删除,里面全是之前项目的提交记录 2、在本地项目地址启动git Bash Here后 执行命令 git remote add origin 远程仓库地址 注意后面接的是远程仓库地址 远程仓库要提前把代码块建好 3、如果出现报错:Updates were rejected because the remote conta…

论文阅读--On optimization methods for deep learning

深度学习的优化方法研究 论文信息&#xff1a;Le Q V, Ngiam J, Coates A, et al. On optimization methods for deep learning[C]//Proceedings of the 28th International Conference on Machine Learning, ICML 2011, Bellevue, Washington, USA, June 28 - July 2, 2011. …

JAVA NIO深入剖析

4.1 Java NIO 基本介绍 Java NIO(New IO)也有人称之为 java non-blocking IO是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方…

【已解决】Python读取sql数据,报错:Not an executable object,解决方案

【已解决】Python读取sql数据&#xff0c;报错&#xff1a;Not an executable object&#xff0c;解决方案 1.报错内容&#xff1a; 通过Python连接sql&#xff0c;读取sql中数据&#xff0c;报错&#xff1a;Not an executable object。具体代码及报错内容见下&#xff1a; …

为什么mac上有的软件删除不掉?

对于Mac用户来说&#xff0c;软件卸载通常是一个相对简单的过程。然而&#xff0c;有时你可能会发现某些软件似乎“顽固不化”&#xff0c;即使按照常规方式尝试卸载&#xff0c;也依然存在于你的电脑上。这到底是为什么呢&#xff1f;本文将探讨这一问题的可能原因。 1.卸载失…