#leetcode673. 最长递增子序列的个数
最长递增子序列的个数
题目描述
给定一个未排序的整数数组 nums,返回其中最长严格递增子序列的个数。
递增子序列不要求元素在原数组中连续,但必须保持原有的相对顺序,且相邻选取元素的值必须严格递增。
注意: 即使两个子序列的数值相同,只要选择的下标不同,也视为不同的子序列。
代码框架
本题使用 LeetCode 函数提交模式。请实现下方 Solution 类中的 findNumberOfLIS 函数,不需要编写 main() 函数,也不需要自行读取标准输入或输出结果。
class Solution {
public:
int findNumberOfLIS(vector<int>& nums) {
}
};
评测程序会自动将数据解析为 vector<int>,调用 Solution::findNumberOfLIS(nums) 并验证返回值。
输入格式
一行,表示 LeetCode 格式的整数数组 nums,保留方括号 [] 和逗号 ,,例如:
[1,3,5,4,7]
请注意: 此处的输入格式仅为评测数据的存储格式。使用上述代码框架提交时,不需要手动解析输入。
输出格式
一行一个整数,表示最长严格递增子序列的个数,即函数的返回值。
使用上述代码框架提交时,不需要自行打印答案。
输入输出样例 #1
输入 #1
[1,3,5,4,7]
输出 #1
2
说明 #1
最长递增子序列有 [1,3,4,7] 与 [1,3,5,7],因此答案为 2。
输入输出样例 #2
输入 #2
[2,2,2,2,2]
输出 #2
5
说明 #2
最长严格递增子序列的长度为 1,每个位置都构成一个不同的长度为 1 的子序列,故答案为 5。
数据范围
1 <= nums.length <= 2000-10^6 <= nums[i] <= 10^6- 答案保证在 32 位有符号整数范围内。
提交要求
- 使用 C++14,只提交
class Solution的完整实现。 - 不要添加
main()函数。 - 不需要使用
cin、scanf、cout或printf。 - 题目按原 LeetCode 函数签名评测,不是传统 ACM 输入输出模式。