Leetcode 1248. 统计「优美子数组」

文章目录

  • 题目
  • 代码(8.2 首刷看解析)

题目

Leetcode 1248. 统计「优美子数组」_第1张图片
Leetcode 1248. 统计「优美子数组」

代码(8.2 首刷看解析)

这个题可以用滑动窗口,也可以用前缀和,正好在刷前缀和专题,就用前缀和做了。

前缀和类型的题都是搭配哈希表,[j...i]的个数用pre[i]-k == pre[j]来实现,用哈希表存储前缀pre[j]的数量

func numberOfSubarrays(nums []int, k int) int {
    mp := map[int]int{0:1}
    pre, res := 0, 0    // 统计前缀奇数的个数
    for _, v := range(nums) {
        if v % 2 == 1 {
            pre++
        }
        if _, ok := mp[pre-k]; ok {
            res += mp[pre-k]
        }
        mp[pre]++   // 前缀出现pre个奇数的个数
    }
    return res;
}

你可能感兴趣的:(Leetcode 1248. 统计「优美子数组」)