Leetcode——300. 最长上升子序列

题目描述:题目链接

给定一个无序的整数数组,找到其中最长上升子序列的长度。

示例:

输入: [10,9,2,5,3,7,101,18]
输出: 4 
解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4

说明:

  • 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。
  • 你算法的时间复杂度应该为 O(n2) 。

进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?

 

这个题目和最长公共子序列一样,都是可以利用动态规划来解决问题的:

可以利用常见的动态规划思路:

1:将问题归纳。可以定义   dp[ i ] 来表示前 i 个字符中的最长的公共子序列。

2:给出动态规划的递推思路。dp[ i ] = max { dp[ j ] + 1}  (0 <= j < i ,nums[j] < nums[i] )

3:初始化。这一步最重要,因为一个数字的时候最长上升子序列为1,所以我们需要将初始化数组为1

其实只要我们细心的推理,可以很容易的得到递推关系式。

 

下面给出具体的代码描述:

class Solution {public int lengthOfLIS(int[] nums) {//如果数组为空,或者数组长度为0,则直接返回0if(nums == null || nums.length == 0){return 0;}int len = nums.length;int[] a = new int[len];Arrays.fill(a,1);//利用两层for循环来处理for(int i = 1; i < len; i++){for(int j = 0; j < i; j++){if(nums[j] < nums[i]){a[i] = Math.max(a[i],a[j]+1);}}}int max = 1;for(int i = 0; i < len; i++){if(a[i] > max){max = a[i];}}return max;}
}

 

转载于:https://www.cnblogs.com/xiaxj/p/9696606.html

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

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

相关文章

后台返回数据打印是[object object]的,报错:SyntaxError: JSON.parse: expected property name or ‘}‘ at line 1 column

今天基于这个问题纠结了一下午&#xff0c;导致这个问题的坑也是挺深的&#xff0c;查找问题最好是从这条数据的存储开始查找 问题1&#xff1a;先确定后台接收数据后存储到数据库里有没有自动转义特殊字符&#xff0c;比如 原始数据是&#xff1a;[{"user_id":20,…

[css] 你知道什么是动态伪类吗?

[css] 你知道什么是动态伪类吗&#xff1f; 锚点伪类&#xff08;a标签&#xff09; 1、:link 未操作的链接 2、:visited 该链接已被访问&#xff0c;一旦:visited&#xff0c;:link/:active不再起作用。用户行为伪类 1、:hover 鼠标悬停该元素 2、:active 鼠标点击该元素 3、…

vue在多方法执行完后再执行另一个方法(等待请求完数据再执行)async/await使用方法和Promise.all

vue在一个方法执行完后执行另一个方法 用Promise.all来实现。 Promise是ES6的新特性&#xff0c;用于处理异步操作逻辑&#xff0c;用过给Promise添加then和catch函数&#xff0c;处理成功和失败的情况 ES7中新提出async搭配await&#xff0c;建议使用async搭配await。 func…

Java开发框架和中间件面试题(4)

27.如何自定义Spring Boot Starter&#xff1f; 1.实现功能 2.添加Properties 3.添加AutoConfiguration 4.添加spring.factory 在META INF下创建spring.factory文件 6.install 28.为什么需要spring boot maven plugin? spring boot maven plugin 提供了一些像jar一样打包…

第二周每周例行报告

1.本周PSP 类型任务开始时间结束时间间隔时间净时间准备工作复习C#&#xff0c;看书2018.9.19 17&#xff1a;032018.9.19 18&#xff1a;17 0min74min编程编写功能一2018.9.20 18&#xff1a;072018.9.20 22&#xff1a;4323min253min编程完善修改功能一2018.9.21…

[css] 使用css3画一个扇形

[css] 使用css3画一个扇形 四个半圆叠加&#xff0c;过半调整 z-index .container { width: 200px; height: 200px; position: relative; border-radius: 100%; } div { width: 50%; height: 100%; position: absolute; left: 0; top: 0; } .fan-1, .fan-3 { background: #C…

ES6 Promise 并行执行和顺序执行

1.Promise.all 并行执行promise getA和getB并行执行&#xff0c;然后输出结果。如果有一个错误&#xff0c;就抛出错误 /*** 每一个promise都必须返回resolve结果才正确* 每一个promise都不处理错误*/const getA new Promise((resolve, reject) > {//模拟异步任务setTime…

poj 1083 Moving Tables

题目 两种做法&#xff0c;开始用贪心做的&#xff0c;有种情况没考虑到&#xff0c;结果排序错了。 这个例子&#xff0c;感觉上有三个交点&#xff0c;以为是30&#xff0c;其实是20. 贪心代码&#xff1a; #include <iostream> #include <cstdio> #include <…

[css] 请使用css3来模拟中/英文打字的效果

[css] 请使用css3来模拟中/英文打字的效果 :after 加个竖条闪啊闪&#xff0c;至于文字一个个出现嘛&#xff0c;text-indent 需要知道字数&#xff0c;clip-path 需要知道宽高&#xff0c;好像也没有特别好的办法。当然如果是单行文本的话用 width overflow 也是阔以的。个人…

[css] 使用css将图片转换成黑白的效果

[css] 使用css将图片转换成黑白的效果 filter: saturate(0);个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

使用router-view时组件之间的通信

情况一&#xff1a;router-view 子组件发生变化导致父组件发生改变 父组件中&#xff1a; <router-view getMessage"showMsg"></router-view> showMsg (val) { // methods方法 val即为子组件传过来的值console.log(val) }子组件中&#xff1a; th…

oracle parallel_index hint在非分区表的生效

之前没特别注意&#xff0c;在有些场景下希望使用并行索引扫描的时候&#xff0c;发现parallel_index hint并没有生效&#xff0c;于是抽空看了下文档&#xff1a;The PARALLEL_INDEX hint instructs the optimizer to use the specified number of concurrent servers to para…

[css] 一个页面引用多个文件,如何防止样式冲突?

[css] 一个页面引用多个文件&#xff0c;如何防止样式冲突&#xff1f; 编码层面&#xff1a; 1、定制规则&#xff1a;不同的样式文件表&#xff0c;增加不同的前缀。 2、按照功能区分文件&#xff1a;不同的文件样式表&#xff0c;针对页面不同的部分写样式&#xff0c;通过…

调试错误,请回到请求来源地,重新发起请求。 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足,建议在开发者中心检查对应功能是否已经添加

接人H5手机网站支付宝支付时&#xff0c;已经将表单发给页面了&#xff0c;支付宝响应调试错误&#xff0c;请回到请求来源地&#xff0c;重新发起请求。 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足&#xff0c;建议在开发者中心检查对应功能是否已经添加。…

eclipse 界面设置与字体更改

目录 eclipse 界面设置与字体更改更改界面颜色&#xff08;Windows&#xff09;windows下全设置窗口颜色eclipse下设置Console窗口颜色设置字体与字号安装Courier New字体设置字体eclipse 界面设置与字体更改 每天换一个新的环境总是要重新设置eclipse的各种配置&#xff0c;最…

[css] 如何清除在项目中无用的css代码呢?

[css] 如何清除在项目中无用的css代码呢&#xff1f; 1、IDE中&#xff0c;会对没有使用到的样式&#xff0c;自己进行检测&#xff0c;删除时候&#xff0c;还需要手动删除。 2、webpack中&#xff0c;有基于消除无用css的插件&#xff08;purifycss-webpack purify-css&…

MySQL 常用需求写法 记录一下

1、MySQL 分组查询文章表各个分类的前N条数据 时间复杂度均为分组中条目数的二次方。而且&#xff0c;很多优化器都不能优化这种查询&#xff0c;使得它的耗时最好为全表行数的二次方(尤其在没有设置正确的索引时)&#xff0c;而且数据量大时&#xff0c;可能将服务器会停止响…

[css] css图片缩放失真出现锯齿的如何解决呢?

[css] css图片缩放失真出现锯齿的如何解决呢&#xff1f; 1、-ms-interpolation-mode&#xff0c;这是针对IE的解决方案。其值设置为bicubic。 2、image-rendering&#xff0c;这是提供了一个速度VS质量之间做权衡的图像缩放关系。 额外的思考&#xff1a; 1、微信上传图片时&…

使用vue 刷新页面后state数据被清空的问题(刷新总是跳转到登陆页面)

在实际的vue项目中&#xff0c;当我们的应用遇到多个组件之间的共享问题时&#xff0c;通常会用到Vuex&#xff08;一个状态管理的插件&#xff0c;可以解决不同组件之间的数据共享和数据持久化&#xff09;&#xff0c;解决组件之间同一状态的共享问题。 因子&#xff1a; V…

解决$router.go(-1)返回上一层页面不刷新页面问题

原因&#xff1a;页面没有跳转过去&#xff0c;但网址已经跳转过去了&#xff0c;这个原因是因为他没有进行缓存&#xff0c;所以页面没有进行及时的渲染。 方案一 //先在router/index.js中添加路由元信息&#xff0c;设置需要缓存的页面 routes: [{path: /,name: index,com…