首页 > 编程语言 >代码随想录算法训练营第五十二天 | 718. 最长重复子数组 ,674. 最长连续递增序列,300.最长递增子序列

代码随想录算法训练营第五十二天 | 718. 最长重复子数组 ,674. 最长连续递增序列,300.最长递增子序列

时间:2024-03-20 14:45:44浏览次数:25  
标签:nums int res 递增 序列 最长 dp

300. 最长递增子序列

  已解答 中等  

相关标签

相关企业  

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。

子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的

子序列  

 

 

示例 1:

输入:nums = [10,9,2,5,3,7,101,18]
输出:4
解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。

示例 2:

输入:nums = [0,1,0,3,2,3]
输出:4

示例 3:

输入:nums = [7,7,7,7,7,7,7]
输出:1

 

提示:

  • 1 <= nums.length <= 2500
  • -104 <= nums[i] <= 104

 


package main

 

func lengthOfLIS(nums []int) int { //dp[i] 以i 为结尾的最长长度 //递推公式 dp[i] = if nums[j] > nums[i] max(dp[j]+1) //初始化 dp[0] = 1 //遍历左到右 //输出,所有dp最大值 dp := make([]int, len(nums)) dp[0] = 1 res := 1 fori := 1; i < len(nums); i++ { ans := 1 forj := 0; j < i; j++ { if nums[i] > nums[j] && dp[j]+1 > ans { ans = dp[j] + 1 } } dp[i] = ans if ans > res { res = ans } } return res }

718. 最长重复子数组

  已解答 中等  

相关标签

相关企业  

提示

 

给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 

 

示例 1:

输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]
输出:3
解释:长度最长的公共子数组是 [3,2,1] 。

示例 2:

输入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]
输出:5

 

提示:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 100

func findLength(nums1 []int, nums2 []int) int { //dp[i][j] nums1的i索引, nums2[j]索引, 最长重复子序列 //递推公式, nums1[i] == nums[j] dp[i][j] = dp[i-1][j-1]+1 else 0 //初始化 dp首行首列 全置0 //向上到下,从左到右,全置0 //输出dp里的最大值 dp := make([][]int, len(nums1)+1) for i := 0; i < len(dp); i++ { dp[i] = make([]int, len(nums2)+1) } res := 0 for i := 1; i < len(nums1)+1; i++ { for j := 1; j < len(nums2)+1; j++ { if nums1[i-1] != nums2[j-1] { continue } dp[i][j] = dp[i-1][j-1] + 1 if dp[i][j] > res { res = dp[i][j] } } } return res }

674. 最长连续递增序列

  已解答 简单  

相关标签

相关企业  

给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。

连续递增的子序列 可以由两个下标 l 和 rl < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。

 

示例 1:

输入:nums = [1,3,5,4,7]
输出:3
解释:最长连续递增序列是 [1,3,5], 长度为3。
尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。 

示例 2:

输入:nums = [2,2,2,2,2]
输出:1
解释:最长连续递增序列是 [2], 长度为1。

 

提示:

  • 1 <= nums.length <= 104
  • -109 <= nums[i] <= 109

 


package main

 

func findLengthOfLCIS(nums []int) int { //dp[i] i结尾的最长长度 //递归公式, if i > i-1 dp[i] = dp[i-1]+1 else dp[i] = 1 //初始化dp[0] = 1 //左到右 //输出 dp := make([]int, len(nums)) dp[0] = 1 res := 1 fori := 1; i < len(nums); i++ { if nums[i] > nums[i-1] { dp[i] = dp[i-1] + 1 } else { dp[i] = 1 } if dp[i] > res { res = dp[i] } } return res }

标签:nums,int,res,递增,序列,最长,dp
From: https://www.cnblogs.com/suxinmian/p/18085179

相关文章

  • 最长公共上升子序列
    \(reference\)\(problem\)首先考虑最长公共子序列,需要两维数组,最长上升子序列,需要一维数组由于最长公共子序列满足两个子序列相同,因此我们可以将二维数组的一维拿出来当作最长上升子序列的一维使用故定义\(f[i][j]\):以\(b[j]\)结尾的最长公共上升子序列状态转移:由于b[j]必......
  • C# 中使对象序列化/反序列化 Json 支持使用派生类型以及泛型的方式
    C#中使对象序列化/反序列化Json支持使用派生类型以及泛型方式废话#前言#为啥想写这个博客最近自己写的框架有用到这个类似工作流,支持节点编码自定义,动态运行自定义.尽量减少动态解析这就需要确定类型.有什么好的奇思妙想可以一起来讨论噢(现在还是毛坯,测......
  • 最长公共子序列求方案数
    题目链接参考在最长公共子序列问题中,状态的划分有两类:a[i]==b[j]f[i][j]=f[i-1][j-1]+1;a[i]!=b[j]f[i][j]=max(f[i-1][j],f[i][j-1],f[i-1][j-1])不过,考虑到f[i-1][j-1]可以通过f[i-1][j]或f[i][j-1]转移而来,我们通常将a[i]!=b[j]时的转移方程写为f[i][j]=max(f[i-1][......
  • 蓝桥杯题目-可构造的序列总数
    链接可构造的序列总数-蓝桥云课(lanqiao.cn)知识点动态规划思路        定义表示序列长度为,以结尾的合法序列的数量 ,初始化时有。因为题意要求 是 的倍数,所以在转移时每个数应该从它的因子转移过来,即:                        ......
  • Prufer序列
    基本信息定义:prufer序列是无根树和序列的双向映射,并且描述了节点读书以及父节点的信息。使用场景:将构造树的问题转化为构造序列,将统计树的问题转化为统计序列,将树的dp转化为序列的dp。如何得到prufer序列?统计树上的所有节点的度数\(d_i\)。找到所有度数为\(1\)的节点......
  • R语言k-Shape时间序列聚类方法对股票价格时间序列聚类|附代码数据
    原文链接:http://tecdat.cn/?p=3726最近我们被客户要求撰写关于时间序列聚类的研究报告,包括一些图形和统计输出。本文我们将使用k-Shape时间序列聚类方法检查与我们有业务关系的公司的股票收益率的时间序列企业对企业交易和股票价格在本研究中,我们将研究具有交易关系的公司的......
  • 资源加载和序列化
    一切加载最后都要跑到LoadPackageInternal:创建Linker序列化(LoadAllObjects){ FUObjectSerializeContext*InOutLoadContext=LoadContext; Linker=GetPackageLinker(InOuter,PackagePath,LoadFlags,nullptr,InReaderOverride,&InOutLoadContext,ImportLinker,In......
  • abc253E 相邻元素之差不低于K的序列数
    给定n,m,k,找一个序列A[n],使用满足1<=A[i]<=m,并且任意相邻两元素的差的绝对值大于等于k,求满足条件的序列个数,求998244353取模。2<=n<=1000;1<=m<=5000;0<=k<=m-1设dp[i][j]表示前i个数,以j结尾的方案数,在计算dp[i+1][k]时,可以枚举j进行统计,复杂度为O(n^3),可以通过前缀和优化成O(......
  • python时间序列缺失值补零
    有个雨滴谱的数据,情况是有雨滴的时候会记录那个时刻的雨滴情况,但是无雨滴的时间没有记录那么我想花一个雨滴时间序列的情况,就需要补全没有雨滴的时间,并且记录为0数据情况如下: python代码:#!usr/bin/envpython#-*-coding:utf-8-*-"""@author:Su@file:timecomplet.p......
  • FastJson反序列化3-1.2.25绕过
    在1.2.25中,主要添加了config.checkAutoType(typeName,null)函数,所以从这里开始查看检查逻辑;为了方便,先看POC;publicvoidbyPass1(){Strings1="{{\"@type\":\"java.lang.Class\",\"val\":\"com.sun.rowset.JdbcRowSetImpl\"},{......