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
}
浙公网安备 33010602011771号