最长递增子序列

300. Longest Increasing Subsequence (Medium)

题目描述:

  给定一个数组,找到它的最长递增子序列

思路分析:

  动态规划思想,定义一个数组 dp 存储最长递增子序列的长度,dp[n] 表示以 Sn 结尾的序列的最长递增子序列长度。对于一个递增子序列 {Si1, Si2,...,Sim},如果 im < n 并且 Sim < Sn,此时 {Si1, Si2,..., Sim, Sn} 为一个递增子序列,递增子序列的长度增加 1。满足上述条件的递增子序列中,长度最长的那个递增子序列就是要找的,在长度最长的递增子序列上加上 Sn 就构成了以 Sn 为结尾的最长递增子序列。因此 dp[n] = max{ dp[i]+1 | Si < Sn && i < n} 。

代码:

public int lengthOfLIS(int []nums){if(nums==null||nums.length==0)return 0;int []dp=new int [nums.length];for(int i=0;i<nums.length;i++){int max=1;for(int j=0;j<i;j++){if(nums[i]>nums[j]){max=Math.max(max,dp[j]+1);}}dp[i]=max;}int res=dp[0];for(int i=1;i<nums.length;i++){if(dp[i]>res)res=dp[i];}return res;
}

转载于:https://www.cnblogs.com/yjxyy/p/11119151.html

动态规划(最长递增子序列)---最长递增子序列相关推荐

  1. Leetcode动态规划:300.longest-increasing-subsequence(最长递增子序列)

    300. 最长递增子序列 最近一直在攻克动态规划的题,Leetcode的简单题已经刷完,现在冲中等题,这道题算是一个比较经典的题吧,独立完成,虽然花了两个多小时,但收获很多: 思路:动态规划首先要找到 ...

  2. 动态规划之最长递增子序列 最长不重复子串 最长公共子序列

    [前言]动态规划:与分治法相似,即通过组合子问题来求解原问题,不同的是分治法是将问题划分为互不相交的子问题,递归求解子问题,再将他们组合起来求出原问题的解. 动态规划则应用于子问题重叠的情况,通常用来 ...

  3. 算法设计 - LCS 最长公共子序列最长公共子串 LIS 最长递增子序列

    出处 http://segmentfault.com/blog/exploring/ 本章讲解: 1. LCS(最长公共子序列)O(n^2)的时间复杂度,O(n^2)的空间复杂度: 2. 与之类似但不 ...

  4. 最长递增子序列 最长连续递增序列

    引言 这两道题有很大的相似性,在这里主要的地方就是循环的设置,不仅仅适用于这两道题,在很多类似的题目中都可以用到,要学会相应的方法才行: 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格 ...

  5. 最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和...

    最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和 文章作者:Yx.Ac   文章来源:勇幸|Thinking (http://www.ahathi ...

  6. 动态规划算法之:最长公共子序列 最长公共子串(LCS)

    1.先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的.而最长公共子序列则并不要求连续. 2.最长公共子串 其实这是一个序贯决策问题 ...

  7. 最长公共子序列算法 java_转【算法之动态规划(三)】动态规划算法之:最长公共子序列 最长公共子串(LCS)字符串相似度算法...

    1.先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的.而最长公共子序列则并不要求连续. 2.最长公共子串 其实这是一个序贯决策问题 ...

  8. 动态规划算法分析和理解:最长公共子序列、公共子字符串

    定义啥的就不多说了,反正我有自己的理解就行.例题是,最长公共子序列和最长公共子字符串的动态规划求解过程 目录 一.递归和动态规划 二.动态规划求解步骤 三.最长公共子序列 四.最长公共子字符串 一.递 ...

  9. 数据结构 - 字符串 - 最长公共子序列 + 最长公共子字符串 - 动态规划

    最长公共子序列 /*** 最长公共子序列* 参考链接:http://blog.csdn.net/biangren/article/details/8038605* Created by 18710 o ...

  10. 【To Understand】动态规划:求最长公共子串/最长公共子序列

    动态规划:求最长公共子串/最长公共子序列 本博客转载自:https://blog.csdn.net/u013074465/article/details/45392687 该博客中详细讲解了求最长公共 ...

最新文章

  1. 分拆之后又有大动作,惠普的下一步怎么走?
  2. P4103 [HEOI2014]大工程
  3. 智能小程序档案馆——如何给“包”瘦身
  4. python不能安装在中文_无法在Python上安装表
  5. 如何成为一名Web前端开发人员?入行学习完整指南
  6. 从1亿个ip中找出访问次数最多的IP
  7. 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题
  8. Excel批量生成minitab图表(自动化)
  9. linux学习教程:Vim编辑器和恢复ext4下误删除文件-Xmanager工具
  10. 业余草 2018 技术文章合集整理,适合入门、中级、高级、架构师进阶
  11. STM32F107单片机驱动Dp83848以太网芯片程序 项目开发用到了Dp83848这一个以太网芯片,本人发现其配置起来比较麻烦,所以整理了一份STM32F107单片机驱动Dp83848的程序代码例
  12. comsol入门闲聊
  13. mysql gtidpurged_gtid环境下mysqldump对于set-gtid-purged的取值
  14. 中央电大 c语言程序设计a 试题,中央电大2008年秋C语言程序设计A试题5
  15. HRM人力资源系统-Day13
  16. Img2Lcd 使用
  17. C语言拆分一个三位数。以及交换两个数(常规法复习加指针法学习)
  18. Windows SWIG 安装与部署
  19. 新一代VTL实现“新”的数据保护
  20. 最美诗词可切换网站单页源码

热门文章

  1. 源文件的编码会对编译结果有影响
  2. 关于数据事实表汇总的模拟实现——原理
  3. netbean创建jsf项目
  4. Java 游泳时长计算
  5. Java 接口语法_JAVA接口的基本语法
  6. shell判断false_Python中的True, False条件判断
  7. Color Pilot 5中文版
  8. (私人收藏)2019科协WER解决方案
  9. Roman to Integer LeetCode Java
  10. 【转载】C++创建对象的两种方法