【leetcode--统计优美子数组】

解题思路
一、滑动窗口

不断右移 right 指针来扩大滑动窗口,使其包含 k 个奇数;

若当前滑动窗口包含了 k 个奇数,则如下「计算当前窗口的优美子数组个数」:

统计第 1 个奇数左边的偶数个数 leftEvenCnt。 这 leftEvenCnt 个偶数都可以作为「优美子数组」的起点,因此起点的选择有 leftEvenCnt + 1 种(因为可以一个偶数都不取,因此别忘了 +1 )。
统计第 k 个奇数右边的偶数个数 rightEvenCnt 。 这 rightEvenCnt 个偶数都可以作为「优美子数组」的终点,因此终点的选择有 rightEvenCnt + 1 种(因为可以一个偶数都不取,因此别忘了 +1 )。
因此「优美子数组」左右起点的选择组合数为 (leftEvenCnt + 1) * (rightEvenCnt + 1)。

class Solution:  
    def numberOfSubarrays(self, nums: List[int], k: int) -> int:  
        left = right = odd_cnt = res = 0  
        while right < len(nums):  
            if nums[right] % 2 == 1:  
                odd_cnt += 1  
            if odd_cnt == k:  
                tmp = right  
                while right < len(nums) and nums[right] % 2 == 0:  
                    right += 1  
                right_even_cnt = right - tmp  
                left_even_cnt = 0  
                while left < len(nums) and nums[left] % 2 == 0:  
                    left_even_cnt += 1  
                    left += 1   
                res += (left_even_cnt + 1) * (right_even_cnt + 1)  
                left += 1  
                odd_cnt -= 1  
            right += 1  
        return res  


参考链接:https://leetcode.cn/problems/count-number-of-nice-subarrays/solutions/213352/hua-dong-chuang-kou-qian-zhui-he-bi-xu-miao-dong-b/
 

相关推荐

  1. leetcode--统计优美数组

    2024-06-07 20:00:06       11 阅读
  2. 力扣1248.统计优美数组

    2024-06-07 20:00:06       12 阅读
  3. leetcode 4405.统计矩阵

    2024-06-07 20:00:06       23 阅读
  4. leetcode2719. 统计整数数目

    2024-06-07 20:00:06       36 阅读
  5. Leetcode】2719. 统计整数数目

    2024-06-07 20:00:06       34 阅读
  6. leetcode-2719统计证书数目

    2024-06-07 20:00:06       41 阅读

最近更新

  1. Rust入门实战 编写Minecraft启动器#2建立资源模型

    2024-06-07 20:00:06       1 阅读
  2. three.js利用着色器实现波浪效果

    2024-06-07 20:00:06       1 阅读
  3. Python pdfplumber库:轻松解析PDF文件

    2024-06-07 20:00:06       1 阅读
  4. 【必读】HTML中的BFC:10个你不知道的惊人事实

    2024-06-07 20:00:06       1 阅读

热门阅读

  1. 高级数据结构学习

    2024-06-07 20:00:06       8 阅读
  2. reshape用法 python:深入探索多维数组的重塑技巧

    2024-06-07 20:00:06       8 阅读
  3. 一篇高效处理数据可视化Python库,看这篇就够了

    2024-06-07 20:00:06       9 阅读
  4. gpt4free软件的 g4f gui 网页速度非常慢的问题解决

    2024-06-07 20:00:06       5 阅读
  5. 深度解析 VPN 工作原理:保护隐私的关键

    2024-06-07 20:00:06       10 阅读
  6. Podman:Linux下的无守护进程容器引擎

    2024-06-07 20:00:06       10 阅读
  7. NLP基础——语言模型(动手学深度学习)

    2024-06-07 20:00:06       9 阅读
  8. 【怀旧版】win10中从零开始创建vue2+ElementUI项目

    2024-06-07 20:00:06       13 阅读
  9. 【实用技巧】Unity的Transform组件实用技巧

    2024-06-07 20:00:06       11 阅读
  10. 每日一题:聊聊 Redis 过期键的删除策略

    2024-06-07 20:00:06       10 阅读
  11. 函数或变量 ‘tfrstft‘ 无法识别

    2024-06-07 20:00:06       11 阅读
  12. 新能源汽车企业的图纸防泄密解决方案

    2024-06-07 20:00:06       10 阅读
  13. 使用React Hooks有什么优势

    2024-06-07 20:00:06       10 阅读
  14. 笔记93:关于 C++ 中的 Eigen 库

    2024-06-07 20:00:06       8 阅读