leetcode 300.最长递增子序列

动态规划的经典问题之一。

思路:这里的dp数组定义与之前做的那个打家劫舍得模板不一样,上一个计算的是偷多少家获得的最大钱财,是对于房子个数的定义。这里并不是,这里是对于一个数结尾作为dp数组的定义。

解释一下,我们首先拿3,1,2,0,5作为例子。这里的最大递增子序列是1,2,5.。有人这个时候想用暴力做了。不对,如果是1,2,3,2,3,5呢?你的暴力解法就不管用了,会卡在第一个3上,所以不可取。

这里作尾的思想大家作为一种思想记住,动态规划的最好办法就是积累,当然不排除你自己天赋异禀。作尾的话我们就可以递推来实现了。就拿第一个例子说,我们拿3作尾,这个时候就只有一个;如果拿5作尾,我们从头开始遍历,{3,5}j是,以3作尾的子序列也并上来了,这是一种可能,{1,2,5}是一种,以2作尾的序列也并上来了,也就是{1,2},以1作尾的序列也并上来了,也就是{1}。这样大家应该就清楚了,我们需要的最长递增序列,需要的就是各种数字作尾相连接起来!同样,我们以5作尾本身就有序列,需要上一层保险,跟前面接上来的序列加上这个5作比较。

这样就写出来了状态方程:

dp[i]=max(dp[i],dp[j]+1)

注意:为什么在最后+1?因为我们原始令dp为0了,你可以令dp初始值为1,这样就不在最后+1了,就是考虑到自身作尾的数也算数。

上代码:

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

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

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

相关文章

微信小程序屏蔽控制台黄色提示信息

我们很多时候 一个小程序 啥都没有 终端就一直报一些黄色的警告 可以打开项目的 project.config.json 找一下setting 下面有没有 checkSiteMap 字段 如果没有加一个 如果有 直接将值改为 false 这样 再运行 就不会有这个黄色的提示信息了

【GStreamer】basic-tutorial-3:信号注册、发送、连接、处理

【目录】郭老二博文之:图像视频汇总 1、示例注释 #include <gst/gst.h>/ 1、将必要的元素放到一个结构体中,方便在各个回调函数中调用 */ typedef struct _CustomData {GstElement *pipeline;GstElement *source;

第1章:绪论 1.1数据库系统概述

文章目录 1.1 数据库系统概述1.1.1 数据库的4个基本概念1.1.2 数据管理技术的产生和发展1.1.3 数据库系统的特点 1.1 数据库系统概述 1.1.1 数据库的4个基本概念 数据(Data) 是数据库中存储的基本对象 数据的定义&#xff1a;描述事物的符号记录 数据的种类&#xff1a;文本、…

【C语言】动态分配内存给一维、二维数组

前言 对于如何将未知数量的数组存放系统&#xff0c;可以用动态分配数组来解决&#xff0c;那么如果想将内存动态分配给一个未知大小的二维数组&#xff0c;该如何&#xff1f; 一、动态分配内存给一维数组 #include<stdio.h> #include<stdlib.h>int main() {//输…

Java多态性的作用及解析

多态性是 Java 面向对象编程的一个重要特性,它的主要作用包括以下几个方面: 提高代码的可扩展性:多态性使得我们可以在不修改现有代码的情况下,通过继承和重写方法来添加新的行为。这意味着我们可以在不影响现有功能的前提下,对代码进行扩展和修改。 增强代码的可读性:使…

JVM 基础知识学习笔记

JVM 基础知识学习笔记 1. JVM 介绍 什么是 JVM ? JVM 本质上是一个运行在计算机上的程序&#xff0c;它的职责是运行 Java 字节码文件。 JVM 的功能是什么 ? 解释和运行: 对字节码文件中的指令&#xff0c;实时的解释成机器码&#xff0c;让计算机执行。内存管理: 自动为…

【洛谷 P8682】[蓝桥杯 2019 省 B] 等差数列 题解(数学+排序+差分)

[蓝桥杯 2019 省 B] 等差数列 题目描述 数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列&#xff0c;只记得其中 N N N 个整数。 现在给出这 N N N 个整数&#xff0c;小明想知道包含这 N N N 个整数的最短的等差数列有几项&#xff1f; 输…

001 GUI编程简介

一个知识该怎么学&#xff1f; 这是什么该怎么玩能干什么 图形化程序应该包含并不限于如下组件 窗口弹窗面板文本框列表框按钮图片监听事件鼠标键盘事件 GUI介绍 核心技术&#xff1a;Swing与AWT 不流行原因&#xff1a;界面不美观、需要JRE环境 仍然学习的原因&#xf…

【Web】速谈FastJson反序列化中JdbcRowSetImpl的利用

目录 简要原理分析 exp 前文&#xff1a;【Web】速谈FastJson反序列化中TemplatesImpl的利用 简要原理分析 前文的TemplatesImpl链存在严重限制&#xff0c;即JSON.parseObject()需要开启Feature.SupportNonPublicField fastjson的第二条链JdbcRowSetImpl&#xff0c;主要…

【AI视野·今日Robot 机器人论文速览 第八十一期】Mon, 4 Mar 2024

AI视野今日CS.Robotics 机器人学论文速览 Mon, 4 Mar 2024 Totally 25 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Robust Online Epistemic Replanning of Multi-Robot Missions Authors Lauren Bramblett, Branko Miloradovic, Patrick Sherm…

MySQL字符集和比较规则

MySQL字符集和比较规则 字符集和比较规则简介 字符集&#xff1a; 描述字符与二进制数据的映射关系 比较规则&#xff1a;比较指定字符集中的字符的规则 字符集 我们知道&#xff0c;计算机无法直接存储字符串&#xff0c;实际存储的都是二进制数据。字符集是有限的&#xff…

[LeetBook]【学习日记】数组内乘积

题目 按规则计算统计结果 为了深入了解这些生物群体的生态特征&#xff0c;你们进行了大量的实地观察和数据采集。数组 arrayA 记录了各个生物群体数量数据&#xff0c;其中 arrayA[i] 表示第 i 个生物群体的数量。请返回一个数组 arrayB&#xff0c;该数组为基于数组 arrayA …

常用Linux 命令汇总

1、基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作系统信息 arch 显示机器的处理器架构 uname -m 显示…

vue3项目tsconfig.js详解

Tsconfig.json是ts编译器的配置文件&#xff0c;ts编译器可以根据它的配置来对代码的编译 {/*tsconfig.json是ts编译器的配置文件&#xff0c;ts编译器根据它的配置来编译ts文件"include"用来指定哪些ts文件要进行编译"exclude"用来指定那些ts文件不需要进…

分布式任务调度:XXL-Job入门介绍实战

1. 引言 随着互联网业务的不断扩展和复杂化&#xff0c;分布式任务调度成为了构建大规模系统的重要组成部分。XXL-Job作为一款开源的分布式任务调度平台&#xff0c;提供了完整的任务调度和管理功能&#xff0c;被广泛应用于各种场景。本文将介绍如何入门使用XXL-Job&#xff…

Python解释器及PyCharm安装教程

PyCharm官方下载地址☞https://www.jetbrains.com/pycharm/download/?sectionwindows Python解释器官方下载地址☞ https://www.python.org/downloads/windows/

牛客小白月赛60 C 小竹关禁闭(动态规划 01背包)

题目描述 妈妈成功将小竹救了出来&#xff0c;她觉得小竹实在是太笨了&#xff0c;决定关小竹一周禁闭。可是小竹哪里能忍受失去自由&#xff0c;他早就偷藏了一部手机用于联系你&#xff0c;请求你帮助他逃离。 你通过观察发现他房间内有 n n n 个可用于制成绳子的物品&…

数学建模【灰色关联分析】

一、灰色关联分析简介 一般的抽象系统,如社会系统、经济系统、农业系统、生态系统、教育系统等都包含有许多种因素&#xff0c;多种因素共同作用的结果决定了该系统的发展态势。人们常常希望知道在众多的因素中&#xff0c;哪些是主要因素&#xff0c;哪些是次要因素;哪些因素…

Android各版本差异性

Android各版本差异性 Android 6&#xff08;api 23&#xff09; 指纹识别 运行时权限&#xff1a;动态申请&#xff08;重点&#xff09; 移除对Apache HTTP client的支持&#xff0c;建议使用HttpURLConnection。 休眠和应用待机模式&#xff08;Doze and App Standby&…

web学习笔记(二十三)

目录 1.增加节点 1.1document.write 1.2innerHTML 1.3动态添加 1.4追加和插入节点 2.删除、克隆、替换节点 2.1删除节点 2.2克隆节点 2.3替换节点 3.事件 3.1什么是事件 3.2事件三要素 3.3事件的种类 3.4常见事件名称&#xff08;类型&#xff09;汇总 4.操作…