力扣 300. 最长递增子序列

题目来源:https://leetcode.cn/problems/longest-increasing-subsequence/description/

C++题解1:动态规划

用两个循环,每到一个元素,就找它之前的最长递增子序列。

dp[i]表示第i个元素的最长递增子序列,里层遍历寻找之前的最长的递增子序列然后更新dp[i]。

class Solution {
public:int lengthOfLIS(vector<int>& nums) {int n = nums.size();if(n == 1) return 1;int len = 0;vector<int> dp(n, 1); // 前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);}len = max(len, dp[i]);}return len;}
};

C++题解2:时间复杂度降低到 O(n log(n))。应该是贪心+二分查找

对于[10,9,2,5,7,3,101,18],[10]->[9]->[2]->[2,5]->[2,5,7]->[2,3,7](这一步是更新了3的位置,但是最长递增子序列的长度还是为3)->[2,3,7,101]->[2,3,7,18]
class Solution {
public:int lengthOfLIS(vector<int>& nums) {int n = nums.size();if(n == 1) return 1;vector<int> zi(1, 0);zi[0] = nums[0];int len = 1; for(int i = 1; i < n; i++) {if(nums[i] > zi[len-1]) {zi.push_back(nums[i]);len++;}else {int left = 0, right = len-1, mid = floor((left+right)/2);while(left < right) {if(zi[mid] == nums[i]) break;else if(zi[mid] > nums[i]) {right = mid; mid = floor((left+right)/2);}else {left = mid+1;mid = floor((left+right)/2);}}zi[mid] = nums[i];}}return zi.size();}
};

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

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

相关文章

【python基础学习2】python可迭代对象iterator的特点,以及相关函数:zip(), map(), join() 和strip()方法等

目录 1 python里的可迭代对象 1.1 什么是可迭代对象 1.2 python里的可迭代对象 1.3 可迭代对象如何遍历 1.3.1 可迭代方法 1.3.2 迭代器的测试 1.4 python里的可迭代对象都不是向量&#xff0c;加法等是合并规则 1.5 可迭代对象不支持减法操作 1.6 可迭代器可以直接用…

STM32自学☞输入捕获测频率和占空比案例

本文是通过PA0口输出PWM波&#xff0c;然后通过PA6口捕获PWM波的频率和占空比&#xff0c;最终在oled屏上显示我们自己设置的频率和占空比。由于和前面的pwm呼吸灯代码有重合部分所以本文中的代码由前者修改而来&#xff0c;对于文件命名不要在意。 pwm_led.c文件 /* 编写步…

RubyMine 2023:让Ruby编程变得更简单 mac/win版

JetBrains RubyMine 2023是一款专为Ruby开发者打造的强大集成开发环境&#xff08;IDE&#xff09;。这款工具集成了许多先进的功能&#xff0c;旨在提高Ruby编程的效率和生产力。 RubyMine 2023软件获取 RubyMine 2023的智能代码编辑器提供了丰富的代码补全和提示功能&#…

使用vuetify实现全局v-alert消息通知

前排提示&#xff0c;本文为引流文&#xff0c;文章内容不全&#xff0c;更多信息前往&#xff1a;oldmoon.top 查看 简介 使用强大的Vuetify开发前端页面&#xff0c;结果发现官方没有提供简便的全局消息通知组件&#xff08;像Element中的ElMessage那样&#xff09;&#xf…

机器学习之特征缩放

特征缩放&#xff08;Feature Scaling&#xff09;是机器学习数据预处理中的一种方法&#xff0c;旨在将不同量级的数据变换到相同的尺度。这一步骤对于很多机器学习算法来说非常重要&#xff0c;因为算法的性能可能会因为特征的量级不同而受到影响。特征缩放可以提高算法的收敛…

【web】nginx+php环境搭建-关键点(简版)

一、nginx和php常用命令 命令功能Nginxphp-fpm启动systemctl start nginxsystemctl start php-fpm停止systemctl stop nginxsystemctl stop php-fpm重启systemctl restart nginxsystemctl restart php-fpm查看启动状态systemctl status nginxsystemctl status php-fpm开机自启…

Go命令源码文件

Go命令源码文件 命令源码文件的用途&#xff0c;怎样编写它&#xff1f; 命令源码文件是程序的运行入口&#xff0c;是每个可独立运行的程序必须拥有的。如果一个源码文件声明属于 main 包&#xff0c;并且包含一个无参数声明且无结果声明的 main 函数&#xff0c;那么它就是…

[HackmyVM]靶场 Azer

kali:192.168.56.101 主机发现 arp-scan -l靶机:192.168.56.103 端口扫描 nmap -p- 192.168.56.103 开启了80 3000端口 看一下80端口 一直在那转&#xff0c;看源码也没什么有用的东西 扫一下目录 扫不到什么东西 看看另一个端口 是个登录界面 输入admin/admin测试 错误…

Kafka入门二——SpringBoot连接Kafka示例

实现 1.引入maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache…

2-25算法习题总结

贪心问题 P1803 凌乱的yyy / 线段覆盖 凌乱的yyy / 线段覆盖 题目背景 快 noip 了&#xff0c;yyy 很紧张&#xff01; 题目描述 现在各大 oj 上有 n n n 个比赛&#xff0c;每个比赛的开始、结束的时间点是知道的。 yyy 认为&#xff0c;参加越多的比赛&#xff0c;no…

基于springboot+vue的学科平台系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

代码随想录三刷day13

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣151. 反转字符串中的单词二、力扣55. 右旋字符串&#xff08;第八期模拟笔试&#xff09;三、力扣28. 找出字符串中第一个匹配项的下标 前言 KMP主要应…

轻量级模型,重量级性能,TinyLlama、LiteLlama小模型火起来了,针对特定领域较小的语言模型是否与较大的模型同样有效?

轻量级模型&#xff0c;重量级性能&#xff0c;TinyLlama、LiteLlama小模型火起来了&#xff0c;针对特定领域较小的语言模型是否与较大的模型同样有效? 当大家都在研究大模型&#xff08;LLM&#xff09;参数规模达到百亿甚至千亿级别的同时&#xff0c;小巧且兼具高性能的小…

Mysql8.0 字符集

在8.0版本之前&#xff0c;MySQL默认的字符集为latin1&#xff0c;而8.0版本默认的字符集为utf8mb4。 latin1是ISO-8859-1的别名&#xff0c;有些环境下写作latin-1。ISO-8859-1编码是单字节编码&#xff0c;不支持中文等多字节字符&#xff0c;但向下兼容ASCII&#xff0c;其编…

学生信息的那些操作:(3)按姓名,查个人

有一学生成绩表&#xff0c;包括学号、姓名、3门课程成绩。请实现如下查找功能&#xff1a;输入一个学生的姓名&#xff0c;输出该学生学号、姓名、3门课程成绩 输入格式: 首先输入一个整数n(1<n<100)&#xff0c;表示学生人数&#xff1b; 然后输入n行&#xff0c;每…

关于CSS 盒子模型的基础教程

什么是CSS盒子模型&#xff1f; 在学习CSS布局时&#xff0c;一个非常重要的概念就是盒子模型。CSS盒子模型描述了网页中元素的布局方式&#xff0c;每个元素都被看作一个矩形的盒子&#xff0c;这个盒子包含了内容、内边距、边框和外边距四个部分。 盒子模型的组成部分 盒子…

Linux环境基础开发工具使用篇(三) git 与 gdb

一、版本控制器-git 1.简单理解: ①git既是服务端&#xff0c;又是客户端 ②git会记录版本的变化 ③git是一个去中心化的分布式软件 git/gitee 是基于git仓库搭建的网站&#xff0c;让版本管理可视化 2.git 三板斧提交代码 查看安装的git版本 git--version 命令行提交代…

FPGA IO命名与Bank划分

文章目录 IO的命名IO物理命名IO功能命名 Bank简介FPGA器件功能命名与Bank划分查找XILINXIntelLATTICE IO的命名 IO物理命名 FPGA的IO物理命名规则&#xff0c;也就是我们做管脚约束时候的命名。芯片通常是长方体或者正方体&#xff0c;所以命名通常采用字母数字组合的方式&am…

FMM 笔记:st-matching(colab上执行)【官方案例解读】

在colab上运行&#xff0c;所以如何在colab上安装fmm&#xff0c;可见FMM 笔记&#xff1a;在colab上执行FMM-CSDN博客 st-matching见论文笔记&#xff1a;Map-Matching for low-sampling-rate GPS trajectories&#xff08;ST-matching&#xff09;-CSDN博客 0 导入库 from…

华为畅享 60X 到底值得入手吗?这4点你必须要知道

作为一款主打千元机市场的机型&#xff0c;华为畅享 60X 到底怎么样&#xff1f;是否值得入手&#xff1f; 可以负责任的说华为畅享 60X 是一款性价比超高的手机&#xff0c;凭借其出色的硬件配置和适中的价格&#xff0c;不仅拥有华为完整的鸿蒙生态&#xff0c;同时它超大屏幕…