leetcode 930. 同じ二元サブ配列(C++、python)


いくつかの0および1からなる配列Aのうち、Sの非空のサブ配列の数および数.
 
例:
  :A = [1,0,1,0,1], S = 2
  :4
  :
       ,  4            :
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]

 
ヒント:A.length <= 30000 0 <= S <= A.length A[i]0または1ですC++
class Solution {
public:
    int numSubarraysWithSum(vector& A, int S) 
    {
        int res=0;
        int n=A.size();
        map tmp;
        tmp[0]=1;
        int sum=0;
        for(int i=0;i

python
class Solution:
    def numSubarraysWithSum(self, A: List[int], S: int) -> int:
        res=0
        n=len(A)
        dic={0:1}
        su=0
        for i in range(n):
            su+=A[i]
            if su-S in dic:
                res+=dic[su-S]
            if su in dic:
                dic[su]+=1
            else:
                dic[su]=1
        return res