跳到主要内容

2831.找出最长等值子数组

链接:2831.找出最长等值子数组
难度:Medium
标签:数组、哈希表、二分查找、滑动窗口
简介:从 nums 中删除最多 k 个元素后,返回可能的最长等值子数组的长度。

题解 1 - python

  • 编辑时间:2024-05-23
  • 执行用时:623ms
  • 内存消耗:74.98MB
  • 编程语言:python
  • 解法介绍:遍历,哈希存储相同数字的下标。
class Solution:
def longestEqualSubarray(self, nums: List[int], k: int) -> int:
map = defaultdict(deque)
res = 0
for i in range(len(nums)):
q = map[nums[i]]
q.append(i)
while q[-1] - q[0] - len(q) + 1 > k: q.popleft()
res = max(res, len(q))
return res