🗒️2762. 不间断子数组
2025-4-21
| 2025-4-21
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Apr 21, 2025 02:35 AM
给你一个下标从 0 开始的整数数组 nums 。nums 的一个子数组如果满足以下条件,那么它是 不间断 的:
  • ii + 1 ,...,j 表示子数组中的下标。对于所有满足 i <= i1, i2 <= j 的下标对,都有 0 <= |nums[i1] - nums[i2]| <= 2 。
请你返回 不间断 子数组的总数目。
子数组是一个数组中一段连续 非空 的元素序列。

不定长滑动窗口——越短越合法

一般要写 ans += right - left + 1
内层循环结束后,[left, right] 这个子数组是满足题目要求的。
写这道题,可以先看看这道题 239. 滑动窗口最大值。通过使用“单调队列”维持窗口中的最值,大大减少了时间。
在本题中,题目的要求是子数组中的两两元素之间的差值不超过 2 。 转换一下,我们不需要两两对比数组中的元素,只需要找到子数组中的最大值和最小值即可。如果最大值和最小值的差值没有超过 2,表示这个子数组就是合法的。而子数组中的最大值和最小值可以通过“单调队列”来维持。

📎 参考

  • 【题单】滑动窗口与双指针
  • Important
  • LCP 68. 美观的花束2302. 统计得分小于 K 的子数组数目
    Loading...