题目:

Given a sequence of integers, find the longest increasing subsequence (LIS).

You code should return the length of the LIS.

Clarification

What's the definition of longest increasing subsequence?

  • The longest increasing subsequence problem is to find a subsequence of a given sequence in which the subsequence's elements are in sorted order, lowest to highest, and in which the subsequence is as long as possible. This subsequence is not necessarily contiguous, or unique.

  • https://en.wikipedia.org/wiki/Longest_increasing_subsequence

Example

For [5, 4, 1, 2, 3], the LIS is [1, 2, 3], return 3
For [4, 2, 4, 5, 3, 7], the LIS is [2, 4, 5, 7], return 4

题解:

  For dp[i], dp[i] is max(dp[j]+1, dp[i]), for all j < i and nums[j] < nums[i].

Solution 1 ()

class Solution {
public:int longestIncreasingSubsequence(vector<int> nums) {if (nums.empty()) {return 0;}vector<int> dp(nums.size(), 1);int res = 1;for (int i = 1; i < nums.size(); ++i) {for (int j = 0; j < i; ++j) {if (nums[j] < nums[i]) {dp[i] = max(dp[i], dp[j] + 1);}}res = max(dp[i], res);}return res;}
};

Solution 2 ()

class Solution {
public:/*** @param nums: The integer array* @return: The length of LIS (longest increasing subsequence)*/int longestIncreasingSubsequence(vector<int> nums) {vector<int> res;for(int i=0; i<nums.size(); i++) {auto it = std::lower_bound(res.begin(), res.end(), nums[i]);if(it==res.end()) res.push_back(nums[i]);else *it = nums[i];}return res.size();}
};

Solution 3 ()

class Solution {
public:int longestIncreasingSubsequence(vector<int> nums) {if (nums.empty()) {return 0;}vector<int> tmp;tmp.push_back(nums[0]);for (auto num : nums) {if (num < tmp[0]) {tmp[0] = num;} else if (num > tmp.back()) {tmp.push_back(num);} else {int begin = 0, end = tmp.size();while (begin < end) {int mid = begin + (end - begin) / 2;if (tmp[mid] < num) {begin = mid + 1;} else {end = mid;}}tmp[end] = num;}}return tmp.size();}
};

转载于:https://www.cnblogs.com/Atanisi/p/6883116.html

【Lintcode】076.Longest Increasing Subsequence相关推荐

  1. 【leetcode】521. Longest Uncommon Subsequence I

    题目如下: 解题思路:本题有点意思.首先如果输入的两个字符串都为空,那么结果是-1:如果两个字符串长度不一样,那么结果是较长的字符串的长度,因为较长的字符串肯定是自身的子序列,但一定不是较短的字符串的 ...

  2. 【暴力】LeetCode 300. Longest Increasing Subsequence

    LeetCode 300. Longest Increasing Subsequence Solution1:我的答案 暴力搜索,时间复杂度O(n2)O(n2)O(n^2) class Solutio ...

  3. Rosalind Java|Longest Increasing Subsequence动态规划算法

    Rosalind编程问题之计算集合中最长的递增元素子集. Longest Increasing Subsequence Problem: A subsequence of a permutation ...

  4. HPU第三次积分赛-D:Longest Increasing Subsequence(DP)

    Longest Increasing Subsequence 描述 给出一组长度为n的序列,a1​,a2​,a3​,a4​...an​, 求出这个序列长度为k的严格递增子序列的个数 输入 第一行输入T ...

  5. [Swift]LeetCode673. 最长递增子序列的个数 | Number of Longest Increasing Subsequence

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  6. The Longest Increasing Subsequence (LIS)

    传送门 The task is to find the length of the longest subsequence in a given array of integers such that ...

  7. C++longest increasing subsequence 最长递增子序列的实现之二(附完整源码)

    C++longest increasing subsequence 最长递增子序列的实现 C++longest increasing subsequence 最长递增子序列的的实现完整源码(定义,实现 ...

  8. C++longest increasing subsequence 最长递增子序列的实现之一(附完整源码)

    C++longest increasing subsequence 最长递增子序列的实现 C++longest increasing subsequence 最长递增子序列的的实现完整源码(定义,实现 ...

  9. leetcode 300. Longest Increasing Subsequence | 300. 最长递增子序列(动态规划)

    题目 https://leetcode.com/problems/longest-increasing-subsequence/ 题解 难得有官方题解的一道题. 参考:https://leetcode ...

最新文章

  1. 华为hybrid-vlan
  2. R语言构建xgboost模型:基于叶子索引衍生出新的特征并进行独热编码(one-hot encoding)之后构建新的模型、比较加入叶子索引特征的模型的分类性能提升
  3. ICCV 2021 Best Paper | Swin Transformer何以屠榜各大CV任务!
  4. 图片预览组件PhotoView
  5. vim编辑环境设定[Linux]
  6. jQuery的load()方法
  7. java redirect 跨域_如何解决跨域重定向携带参数的问题?不使用将参数拼接在重定向url末尾的方式...
  8. .NET开发中应该遵循的几点建议
  9. php 收缩栏,HTML5每日一练之details展开收缩标签的应用
  10. 面试官系统精讲Java源码及大厂真题 - 38 线程池源码面试题
  11. Python: classmethod staticmethod 区别
  12. java面向对象编程集合边框_第六章使用java实现面向对象-集合框架
  13. 【c++模板实现】二叉查找树
  14. 西安电子科大2010年的硕士博士考试推荐书
  15. PR转场插件 MAC版 FilmImpact Transition Pack v1-v2
  16. ruoyi第三方登入Gitee
  17. 基于jsp+mysql+Spring+SpringMVC+mybatis的ssm生鲜超市进销存管理系统
  18. 学习黑客必须要掌握的DOS命令全集
  19. 网络安全工程师的职业前景如何?
  20. TypeScript是什么,为什么要使用它?

热门文章

  1. PHP32向右位移2位是多少,PHP的二进制位移操作
  2. 我运维生涯的第一个Blog
  3. 通过DBLINK跨数据库查询,同步创建表结构,插入表数据
  4. 在Linux下安装和使用MySQL
  5. Nginx配置文件的配置说明
  6. 简书的假想用户场景以及不同用户各自需要解决的烦恼
  7. Arcgis Javascript那些事儿(四)--feature access服务编辑feature本质
  8. mac mysql php_Mac下搭建PHP开发环境(Apache+PHP+MySQL+phpMyAdmin)
  9. javaweb编辑器ckeditor配置_ckeditor编辑器在java项目中配置
  10. 【java学习之路】(java框架)001.Maven配置及使用