Re: [闲聊] 每日leetcode

楼主: JIWP (JIWP)   2024-06-22 17:18:55
1248. Count Number of Nice Subarrays
给一个array nums、一个整数 k
nice subarray的定义是包含k个奇数
请问nums包含几个 nice subarrays?
思路:
用sliding window的概念
当找到k个奇数时
就去找前后个有几个偶数
假设前面有i个偶数、后面有j个偶数
那可以组成(i+1)*(j+1)个nice subarray
接着就扣掉第一个奇数,再去找下一个奇数
重复进行上述操作
就可以得到答案了
golang code :
func numberOfSubarrays(nums []int, k int) int {
sum,idx,l,cnt,n:=0,0,0,0,len(nums)
for idx<n{
cnt+=nums[idx]&1
if cnt==k{
prev:=l
for nums[l]&1==0{
l++
}
r:=idx+1
for r<n && nums[r]&1==0{
r++
}
sum+=(l-prev+1)*(r-idx)
l++
idx=r
cnt

Links booklink

Contact Us: admin [ a t ] ucptt.com