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

找出最长等值子数组

问题

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。

如果子数组中所有元素都相等,则认为子数组是一个 等值子数组 。注意,空数组是 等值子数组 。

从 nums 中删除最多 k 个元素后,返回可能的最长等值子数组的长度。

子数组 是数组中一个连续且可能为空的元素序列。

示例

示例 1:

输入:nums = [1,3,2,3,1,3], k = 3
输出:3
解释:最优的方案是删除下标 2 和下标 4 的元素。
删除后,nums 等于 [1, 3, 3, 3] 。
最长等值子数组从 i = 1 开始到 j = 3 结束,长度等于 3 。
可以证明无法创建更长的等值子数组。
示例 2:

输入:nums = [1,1,2,2,1,1], k = 2
输出:4
解释:最优的方案是删除下标 2 和下标 3 的元素。
删除后,nums 等于 [1, 1, 1, 1] 。
数组自身就是等值子数组,长度等于 4 。
可以证明无法创建更长的等值子数组。

思想

滑动窗口,通过map记录每个值出现的下标位置,然后通过滑动窗口的思想通过下标索引的差值减去两索引位置的差值当小于等于k时即可。

代码

func longestEqualSubarray(nums []int, k int) int {pos := make(map[int][]int)for i,v := range nums {pos[v] = append(pos[v],i)}ans := 0for _,vec := range pos{j := 0for i :=0; i < len(vec); i++ {if vec[i] - vec[j] - (i - j) > k {j++}ans = max(ans,i-j+1)}}return ans
}
http://www.lryc.cn/news/350763.html

相关文章:

  • Go 切片常用操作与使用技巧
  • 2024 中青杯高校数学建模竞赛(A题)数学建模完整思路+完整代码全解全析
  • 开源与闭源:AI模型发展的双重路径之争
  • 微信小程序---小程序文档配置(2)
  • 15:00面试,15:08就出来了,问的问题有点变态。。。
  • 电磁兼容(EMC):去耦电容设计详解
  • 《数组逆序输出》
  • 必应崩了?
  • Elasticsearch集群和Logstash、Kibana部署
  • 网络的基础理解
  • Android Studio 与 Gradle 及插件版本兼容性
  • 【BUG】Edge|联想电脑 Bing 搜索报错“Ref A: 乱码、 Ref B:乱码、Ref C: 日期” 的解决办法
  • 深度学习小车操作手册全
  • Python实现天气数据采集
  • 05 JavaSE-- 异常、IOStream、多线程、反射、Annotation、泛型、序列化
  • c++/c语法基础【2】
  • python 庆余年2收视率数据分析与可视化
  • yolov8训练自己数据集时出现loss值为nan。
  • [Chapter 5]线程级并行,《计算机系统结构》,《计算机体系结构:量化研究方法》
  • 首发!飞凌嵌入式FETMX6ULL-S核心板已适配OpenHarmony 4.1
  • Power BI实现动态度量值
  • 给大家分享一套非常棒的python机器学习课程
  • 免费,Python蓝桥杯等级考试真题--第6级(含答案解析和代码)
  • Spring Boot:SpringBoot 如何优雅地定制JSON响应数据返回
  • c++中的constexpr 与decltype
  • 苹果MacOS系统使用微软远程桌面连接Windows电脑桌面详细步骤
  • 【paper】基于分布式采样的多机器人编队导航信念传播模型预测控制
  • 代码随想录算法训练营第二天| 977.有序数组的平方 、209.长度最小的子数组、 59.螺旋矩阵II
  • list stream 改变list属性的值
  • 绿色智能:AI机器学习在环境保护中的深度应用与实践案例