力扣OJ 1248. 統計「優美子數組」

給你一個整數數組 nums 和一個整數 k。

如果某個 連續 子數組中恰好有 k 個奇數數字,我們就認爲這個子數組是「優美子數組」。

請返回這個數組中「優美子數組」的數目。

 

示例 1:

輸入:nums = [1,1,2,1,1], k = 3
輸出:2
解釋:包含 3 個奇數的子數組是 [1,1,2,1] 和 [1,2,1,1] 。
示例 2:

輸入:nums = [2,4,6], k = 1
輸出:0
解釋:數列中不包含任何奇數,所以不存在優美子數組。
示例 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(vector<int>& nums, int k) {
        vector<int>ji;
        ji.push_back(-1);
        for(int i=0;i<nums.size();i++)if(nums[i]%2)ji.push_back(i);
        ji.push_back(nums.size());
        int ans=0;
        for(int i=1;i+k<ji.size();i++)
        {
            ans+=(ji[i]-ji[i-1])*(ji[i+k]-ji[i+k-1]);
        }
        return ans;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章