673. 最长递增子序列的个数

给定一个未排序的整数数组,找到最长递增子序列的个数。

  • 示例 1:

输入: [1,3,5,4,7]
输出: 2
解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。

  • 示例 2:

输入: [2,2,2,2,2]
输出: 5
解释: 最长递增子序列的长度是1,并且存在5个子序列的长度为1,因此输出5。

  • 注意: 给定的数组长度不超过 2000 并且结果一定是32位有符号整数。

数组定义

dp[i]代表以nums[i]结尾的最长递增子序列的长度,而len[i]则代表子序列的个数

状态转移

  • dp[j]+1>dp[i]
    当发现更长子序列的时候,刷新最长子序列的长度以及对应的个数
  • dp[j]+1==dp[i]
    当发现相同长度的递增子序列,我们对应的子序列个数就需要增加

初始化

将dp[i],len[i]全部置为1,因为只有一个元素也能算一个子序列

代码

class Solution {public int findNumberOfLIS(int[] nums) {int n=nums.length,max=1,res=0;int[] dp=new int[n];int[] len=new int[n];Arrays.fill(dp,1);Arrays.fill(len,1);for(int i=1;i<n;i++){for(int j=i-1;j>=0;j--){if(nums[i]>nums[j]){if(dp[j]+1>dp[i]){dp[i]=dp[j]+1;len[i]=len[j];}else if(dp[j]+1==dp[i]){len[i]+=len[j];}}}     max=Math.max(dp[i],max);}for(int i=n-1;i>=0;i--)if(dp[i]==max)res+=len[i];return res;}
}

673. 最长递增子序列的个数相关推荐

  1. LeetCode 673. 最长递增子序列的个数

    LeetCode 673. 最长递增子序列的个数 文章目录 LeetCode 673. 最长递增子序列的个数 题目描述 一.解题关键词 二.解题报告 1.思路分析 2.时间复杂度 3.代码示例 2.知 ...

  2. [Leetcode]673. 最长递增子序列的个数

    给定一个未排序的整数数组 nums , 返回最长递增子序列的个数 . 注意 这个数列必须是 严格 递增的. 示例 1: 输入: [1,3,5,4,7] 输出: 2 解释: 有两个最长递增子序列,分别是 ...

  3. 112. Leetcode 673. 最长递增子序列的个数 (动态规划-子序列问题)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i]表示以nums[i]结尾的数组最长递增子序列的长度, count数组, count[i]记 录以nums[i]结尾的数组,最长递增子序列的个数. ...

  4. LeetCode 673. 最长递增子序列的个数(DP)

    1. 题目 给定一个未排序的整数数组,找到最长递增子序列的个数. 示例 1: 输入: [1,3,5,4,7] 输出: 2 解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, ...

  5. leetcode - 673. 最长递增子序列的个数

    给定一个未排序的整数数组,找到最长递增子序列的个数. 示例 1: 输入: [1,3,5,4,7] 输出: 2 解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7] ...

  6. 【LeetCode 动态规划专项】最长递增子序列的个数(673)

    文章目录 1. 题目 1.1 示例 1.2 说明 1.3 提示 1.4 进阶 2. 解法一(动态规划) 2.1 分析 2.1.1 定义状态 2.1.2 初始化状态 2.1.3 状态转移 2.1.4 返 ...

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

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

  8. 最长递增子序列的个数Python解法

    给定一个未排序的整数数组,找到最长递增子序列的个数. 列: 输入: [1,3,5,4,7] 输出: 2 解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]. # ...

  9. leetcode算法题-- 最长递增子序列的个数★

    原题链接:https://leetcode-cn.com/problems/number-of-longest-increasing-subsequence/ 相关题目:最长上升子序列 lengths ...

最新文章

  1. 【Android源码剖析】(API 19)[View-----MeasureSpec]
  2. 组合模式 桥接模式 java_java设计模式5.组合模式、门面模式、享元模式、桥接模式...
  3. 它的斗争“和loser对话”短篇故事
  4. centos php-mysql_centOS 下安装php和mysql
  5. linux支持ppp网卡,linux和安卓上(ppp widget)使用3g网卡的方法
  6. 腾讯翻译君在线翻译怎么翻译整个文件_希腊语怎么翻译?教你两个超实用的翻译方法...
  7. List集合去重的常见几种方式
  8. WLAN无线技术基本概念(802.11a/b/g/n/ac/ax区别,频段,信道概念)
  9. python枚举算法流程图_python机器学习十大算法案例
  10. Weiss-(DSAA - in C,1.3)字谜游戏
  11. JDK13 Switch表达式新特性
  12. 酷炫cmd命令行工具——windows terminal的详细配置
  13. 树莓派-4-温度CPU内存硬盘状态信息
  14. 使用you-get批量下载B站视频
  15. PHP —— 一份前端开发工程师够用的PHP知识点(持续更新)
  16. Jquery入门指南教程
  17. PS某色背景改为透明
  18. aqistudy真气网JS逆向 + 数据采集(20220801)
  19. Vs2017 窗口移动vs直接卡死
  20. 深度学习笔记——hrnet

热门文章

  1. 【计算机系统设计】重点 · 学习笔记(0)(数据通路设计思想)
  2. windows环境下C语言socket编程
  3. 【C++ Primer | 16】std::move和std::forward、完美转发
  4. select函数(一)
  5. Java进阶:mysql的事务隔离级别面试题
  6. java---连接池的学习
  7. css3-2 CSS3选择器和文本字体样式
  8. springmvc ajax 页面无法重定向问题!!!!
  9. 多线程之间的通信(等待唤醒机制、Lock 及其它线程的方法)
  10. 【转】无刷新验证用户名可用性