当前位置: 首页 > news >正文

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

673最长递增子序列的个数

给定一个未排序的整数数组 nums , 返回最长递增子序列的个数 。

注意 这个数列必须是 严格 递增的。

示例 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。

提示:

1 <= nums.length <= 2000
-106 <= nums[i] <= 106

C++代码

#include<iostream>
#include<vector>
using namespace std;
int findNumberOfLIS(vector<int>& nums) {int ans = 0 ;int n = nums.size();vector<int> dp(n+1,1);vector<int> count(n+1,1); //统计当前dp有几个来源 int maxsq = 1;if(n==0){return 0;}if(n==1){return 1;}for(int i=0;i<n;i++){count[0] = 1;for(int j = 0;j<=i;j++){//dp[all] 初始化都是1,如果是递减序列,最长递增子序列所有位子都是1 if(nums[j]<nums[i]){//nums[j]<nums[i],这个是递增子串的前提条件 /*计算最长递增子串的长度*/ if(dp[i] < dp[j]+1) {//1.i>j,但是 j位置到i 位置有一个递增序列,因此i位置的递增子序列长度需要+1dp[i]=dp[j]+1; //3.这种情况,只是产生了子序列长度的增加,路数集成j位子的就可以了count[i] = count[j];//写一个跟屁虫,用于跟踪最长子序列长度最大的是谁if(dp[i]>maxsq){maxsq = dp[i];} }else if(dp[i] == dp[j]+1){//2.说明在j位置之前,有一x个到i长度为dp[j]+1递增序列了//因此说明还有一个相同长度的递增子序列长度count[i]=count[i] + count[j];//nums[j]<nums[i],这个条件会产生递增序列// count[i] 记录了在j之前dp[j]+1长度递增序列的长度// count[j] 表示到达j位子的最长子序列长度的个数// 实现的功能就是到达i位置的每一路递增子序列有多少路 }}}}//遍历conut 表,判断条件是 maxsq =dp[i],最大子序列所在位子 for(int k=0;k<n;k++){if(maxsq ==dp[k]){//说明这里有最长序列的位置 ans = ans + count[k];  }} return ans;}int main(){vector<int> nums;std::vector<int> dnums;int arr[] = {2,2,2,2,2};int arrSize = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < arrSize; ++i) {dnums.push_back(arr[i]);}int a = findNumberOfLIS(dnums);cout<<a<<endl;return 0; 
}
http://www.lryc.cn/news/216090.html

相关文章:

  • html用css grid实现自适应四宫格放视频
  • 【机器学习可解释性】5.SHAP值的高级使用
  • CentOS开机自动运行jar程序实现
  • matlab双目标定中基线物理长度获取
  • 自己动手实现一个深度学习算法——二、神经网络的实现
  • gRPC源码剖析-Builder模式
  • ARM传输数据以及移位操作
  • 06、如何将对象数组里 obj 的 key 值变成动态的(即:每一个对象对应的 key 值都不同)
  • ngx_http_request_s
  • Docker 学习路线 2:底层技术
  • UEFI实战——显示图片
  • Ansible中的playbook
  • 怎样去除视频中的杂音,保留人声部分?
  • 基于Qt QTreeView|QTreeWidget控件使用简单版
  • edge浏览器的隐藏功能
  • 安卓抓包之小黄鸟
  • Django中的FBV和CBV
  • 信息泄露--
  • C#WPF文本格式化模式实例
  • 嵌入式云平台一些基础概念的理解
  • 【项目管理】生命周期风险评估
  • 力扣 搜索旋转排序数组 二分
  • 【软件测试】个人博客项目测试报告
  • Express框架开发接口之今日推荐等模块
  • UTONMOS:元宇宙顺势而上,重构数字化发展新形态
  • 【Nginx37】Nginx学习:SSL模块(一)简单配置与指令介绍
  • CompletableFuture 异步调用,获取返回值
  • excel利用正则匹配和替换指定内容
  • IPv4首部格式
  • 点云从入门到精通技术详解100篇-基于 3D 激光雷达的车厢冻煤存量检测