题目描述

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

示例:

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

说明:

  • 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。

  • 你算法的时间复杂度应该为 O(n2) 。

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

题目解析

首先仔细审题,明确题目中的条件。

1、子序列:不要求连续子序列,只要保证元素前后顺序一致即可;

2、上升:这里的“上升”是“严格上升”,类似于 [2, 3, 3, 6, 7]这样的子序列,因为 3 重复了,所以不是“严格上升”的。

一个序列可能有多个最长上升子序列,题目中只要我们求这个最长的长度。如果使用回溯搜索,选择所有的子序列进行判断,时间复杂度为 ©著作权归作者所有:来自51CTO博客作者mb5fe18fab305a5的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 巩固 | 最全面的算法复杂度分析
  2. 这道算法题太简单?你忽略了时间复杂度的要求!
  3. 冰与火之歌:「时间」与「空间」复杂度
  4. 看动画轻松理解时间复杂度(二)
  5. 看动画轻松理解时间复杂度(一)
  6. 时间序列&日期学习笔记大全(上)
  7. 不会时间序列预测?不要紧,大神来教你
  8. 详解之php反序列化
  9. 直击PHP序列化和反序列化原理

随机推荐

  1. 小心递归中内存泄漏
  2. 想来微软实习吗?
  3. 我是怎么把博客粉丝转到公众号的
  4. 如何更好地结构化表示一个 URL?
  5. 5:Zabbix5.0 监控服务器网口流量
  6. 聊聊分布式事务
  7. nginx分发算法
  8. JavaScript算法题:查找数字在数组中的索引
  9. LVS DR模式
  10. windows10家庭版更改登录用户名