1248. 统计「优美子数组」

https://leetcode-cn.com/problems/count-number-of-nice-subarrays/

func numberOfSubarrays(nums []int, k int) int {
    //滑动窗口法:left 每次滑动到下一个奇数处,并记下滑动的距离;right每次也滑动到下一个奇数处,并记下滑动的距离
    left ,right,cnt,res := 0,0,0,0
    for right < len(nums){
        if cnt < k {
            if nums[right]%2 == 1{
                cnt++
            }
            right++
        }
        if cnt == k{
            tmp := right
            for right < len(nums) && nums[right] % 2 == 0{
                right++
            }
            rightCount := right-tmp+1
            leftCount :=0
            for left <= right && nums[left] %2 == 0{
                left++
                leftCount++
            }
            res += rightCount*(leftCount+1)
            left++
            cnt--
        }
    }
    return res
}

  

原文地址:https://www.cnblogs.com/wsw-seu/p/12764427.html