Leetcode--1248. 统计「优美子数组」(java)
給你一個(gè)整數(shù)數(shù)組?nums 和一個(gè)整數(shù) k。
如果某個(gè) 連續(xù) 子數(shù)組中恰好有 k 個(gè)奇數(shù)數(shù)字,我們就認(rèn)為這個(gè)子數(shù)組是「優(yōu)美子數(shù)組」。
請(qǐng)返回這個(gè)數(shù)組中「優(yōu)美子數(shù)組」的數(shù)目。
?
示例 1:
輸入:nums = [1,1,2,1,1], k = 3
輸出:2
解釋:包含 3 個(gè)奇數(shù)的子數(shù)組是 [1,1,2,1] 和 [1,2,1,1] 。
示例 2:
輸入:nums = [2,4,6], k = 1
輸出:0
解釋:數(shù)列中不包含任何奇數(shù),所以不存在優(yōu)美子數(shù)組。
示例 3:
輸入:nums = [2,2,2,1,2,2,1,2,2,2], k = 2
輸出:16
?
提示:
1 <= nums.length <= 50000
1 <= nums[i] <= 10^5
1 <= k <= nums.length
代碼:
class?Solution?{
????public?int?numberOfSubarrays(int[]?nums,?int?k)?{
????????if?(nums?==?null?||?nums.length?==?0?||?nums.length?<?k)?return?0;
????????//?雙指針
????????int?left?=?0,?right?=?0;
????????int?count?=?0;?//?連續(xù)子數(shù)組中奇數(shù)的個(gè)數(shù)
????????int?res?=?0;
????????int?preEven?=?0;?//?記錄第一個(gè)奇數(shù)前面的偶數(shù)個(gè)數(shù)
????????while?(right?<?nums.length){
????????????//?連續(xù)子數(shù)組中奇數(shù)個(gè)數(shù)不夠
????????????if?(count?<?k){
????????????????if?(nums[right]?%?2?!=?0)?count++;
????????????????right++;?//?移動(dòng)右側(cè)指針
????????????}
????????????//?連續(xù)子數(shù)組中奇數(shù)個(gè)數(shù)夠了,看第一個(gè)奇數(shù)前面有多少個(gè)偶數(shù)
????????????if?(count?==?k)?{
????????????????preEven?=?0;
????????????????while?(count?==?k){
????????????????????res++;
????????????????????if?(nums[left]?%?2?!=?0)?count--;
????????????????????left++;
????????????????????preEven++;
????????????????}
????????????}?else?res?+=?preEven;?//?每次遇到?right?為偶數(shù)的時(shí)候就進(jìn)行累加?相當(dāng)于區(qū)間前面偶數(shù)個(gè)數(shù)?*?后面偶數(shù)個(gè)數(shù)
????????}
????????return?res;
????}
}
總結(jié)
以上是生活随笔為你收集整理的Leetcode--1248. 统计「优美子数组」(java)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7-4 堆栈模拟队列 (25 分)
- 下一篇: 第二章 数据的表示和运算 2.1.6 循