leetcode之統計優美子數組

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

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

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

簡要題解

首先我們遍歷一遍數組,爲奇設爲1不爲奇設爲0;之後記錄一下之前綴和出現的次數和前綴和的大小 然後答案即爲當前前綴和大小-k的數值出現的次數和相加即可。主要代碼如下:

class Solution {
public:
    int numberOfSubarrays(vector<int>& nums, int k) {
       for(int i=0;i<nums.size();i++)
       {
        if(nums[i]&1)nums[i]=1;
        else nums[i]=0;
       }unordered_map<long long,int>mp;
       long long sum=0;
       mp[0]=1;int ans=0;
       for(int i=1;i<=nums.size();i++)
       {
             sum+=nums[i-1];
             ans+=mp[sum-k];
             mp[sum]++;
       }
       return ans;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章