【Leetcode Daily】2762不间断数组
题目浅析
想查看原题可以点击题目链接。
简单地说,就是给一个整数数组,并找出其中所有子数组的数目,子数组的要求为其中任意两元素之差不大于 2.
思路分享
越短越合法的不定长滑动窗口的简单变式(【Leetcode Daily】713乘积小于K的子数组
暴力一点的思路,是每次窗口变动,都遍历一边窗口内的元素找其中最大值与最小值之差,但是这样的话,复杂度就是 O(n^2),所以解决这个问题就是本题关键。
以 C++ 的角度,无论是 map 还是 multiset 都能实现本题,陆爻齐采用 map 的方式,可以 O(1) 地取到窗口内的最大值和最小值,只要对首尾迭代器取 first 就行,毕竟这里看的是值差,并非数目差。
代码解答(强烈建议自行解答后再看)
- 参考题解
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!