【Leetcode Daily】1248统计优美子数组
题目浅析
想查看原题可以点击题目链接。
简单地说,就是给一个整数数组和一个整数 k,要求其中所有子数组的数量,不过子数组需要满足一个条件,即其中的奇数的个数恰好为 k。
思路分享
和【Leetcode Daily】930和相同的二元子数组类似的恰好型不定长滑动窗口,不过本题让陆爻齐更深入的思考,越长越合法的左指针的意义。
“众”所周知,我们灵神派的越长越合法类型的解法,是通过累计窗口左指针数值之和计算得出,其意义,除了充当窗口的左侧边界,实质意义可以理解为,窗口左侧满足条件的情况数目,而窗口本身是在遍历右指针情况,这样一来就算是统计了所有情况。
拿第一次满足条件的窗口举例,此时,窗口的左侧还在起点,下标为 0,示意着此前没有满足条件的情况,进入中间的循环,循环的作用是找出不满足条件的边界;如果第一个元素(下标为 0 的那个)恰好是窗口需要的元素,那么左指针右移一步后,因窗口不符合条件而终止循环,此时左指针下标为 1,同时也寓意着以后的窗口都有这一个合法情况。
代码解答(强烈建议自行解答后再看)
- 参考题解
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!