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

leetcode 3201. 找出有效子序列的最大长度 I II

3201. 找出有效子序列的最大长度 I

给你一个整数数组 nums
nums 的子序列 sub 的长度为 x ,如果其满足以下条件,则称其为 有效子序列

  • (sub[0] + sub[1]) % 2 == (sub[1] + sub[2]) % 2 == ... == (sub[x - 2] + sub[x - 1]) % 2
    返回 nums最长的有效子序列 的长度。
    一个 子序列 指的是从原数组中删除一些元素(也可以不删除任何元素),剩余元素保持原来顺序组成的新数组。

示例 1:
输入: nums = [1,2,3,4]
输出: 4
解释:
最长的有效子序列是 [1, 2, 3, 4]
示例 2:
输入: nums = [1,2,1,1,2,1,2]
输出: 6
解释:
最长的有效子序列是 [1, 2, 1, 2, 1, 2]
示例 3:
输入: nums = [1,3]
输出: 2
解释:
最长的有效子序列是 [1, 3]
提示:

  • 2 <= nums.length <= 2 * 10e5
  • 1 <= nums[i] <= 10e7

思路

要使(a + b) % 2 == (b + c) % 2,则奇偶性为:([a,c], b)(ac奇偶性一样,且和b不一样)。难道这题是最长递增子序列的做法?但是最长递增递增子序列的时间花费是O(N2)O(N^2)O(N2),而这题需要在O(N)O(N)O(N)内解决。
其实这题的思路同3202. 找出有效子序列的最大长度 II一模一样。
以下是分析3202. 找出有效子序列的最大长度 II的思路,即找到最长子序列满足:(a1 + a2) % k == (a2 + a3) % k == ...
我们先分析非模条件下的
如果我们可以假设m = a1 + a2 = a2 + a3
f[i]为以i为结尾的最长满足条件的子序列,如果我们要把a3接到一个子序列上,子序列的结尾就必须为m-a3,即f[a3] = f[m-a3] + 1
对于模为k的条件下,m可以等于0~k-1
我们分别遍历m = 0..k-1,求出最大的答案就可以了

func maximumLength(nums []int) int {  return maximumLength_2(nums, 2)  
}  
func maximumLength_2(nums []int, k int) (ans int) {  f := make([]int, k)  for m := 0; m < k; m++ {  clear(f)  for _, x := range nums {  x %= k  f[x] = f[(m-x+k)%k] + 1  }  for _, x := range f {  ans = max(ans, x)  }  }  return  
}
http://www.dtcms.com/a/283486.html

相关文章:

  • 演示数据库操作
  • 测试学习之——Pytest Day2
  • 《十万线段绘乾坤:Canvas离屏渲染深度剖析》
  • 低代码深度切入制造业需求的实践路径
  • 在 CentOS 8 上彻底卸载 Kubernetes(k8s)
  • 每日钉钉API探索:requestAuthCode网页应用(H5微应用)免登授权
  • 【leetcode】1422. 分割字符串的最大得分
  • 创建SprngBoot项目的四种方式
  • FreeRTOS中断管理STM32
  • 【Java】【力扣】20.有效的括号
  • 基于迁移学习的培养基配方开发方法
  • XSS-LABS的Level1-8
  • Python —— 真题三
  • NumPy 详解
  • 【static 修饰局部变量、全局变量、函数】
  • Swift6.0 - 5、基本运算符
  • 账户和组管理
  • JavaEE——死锁
  • PowerBI实现仅在需要图表时显示图表
  • 傅里叶变换算子性质证明
  • GTSuite许可管理常见问题及解决方案
  • 基于FPGA的IIC控制EEPROM读写(1)
  • Mybatis07-逆向工程
  • 《python语言程序设计》2018版第8章5题编写函数统计特定不重复字符串s2在s1中的出现次数
  • C#获取当前系统账户是否为管理员账户
  • 资源利用率提升50%:Serverless 驱动国诚投顾打造智能投顾新范式
  • 用Amazon Q Developer助力Python快捷软件开发
  • EMS4000/EMS3900/EMS4100/EMS3157/EMS/23157高性能高质量模拟开关芯片
  • Go语言自学笔记(2.3-2.6)
  • C++:vector(2)之vector的模拟实现