zoukankan      html  css  js  c++  java
  • Leetcode-930 Binary Subarrays With Sum(和相同的二元子数组)

     1 class Solution
     2 {
     3     public:
     4         int numSubarraysWithSum(vector<int>& A, int S)
     5         {
     6             if(S==0)
     7             {
     8                 int result = 0;
     9                 int count = 0;
    10                 for(int i = 0; i < A.size(); i ++)
    11                 {
    12                     if(A[i]==0)
    13                         count ++;
    14                     else
    15                     {
    16                         result += (count+1)*count/2;
    17                         count = 0;
    18                     }
    19                 }
    20                 if(count)
    21                 {
    22                     result += (count+1)*count/2;
    23                     count = 0;
    24                 }
    25                 return result;
    26             }
    27             int totalResult = 0;
    28 
    29             int left = 0,right = 0;
    30             int oneSum = 0;
    31             int result = 0;
    32             for(; right < A.size(); right ++)
    33             {
    34                 if(oneSum < S)
    35                 {
    36                     if(A[right]==1)
    37                         oneSum ++;
    38                 }
    39                 if(oneSum == S)
    40                 {
    41                     int leftResult = 1,rightResult = 1;
    42                     while(right != A.size()-1 && A[right+1]==0)
    43                     {
    44                         right ++;
    45                         rightResult ++;
    46                     }
    47                     if(A[left]==1)
    48                         ;
    49                     else
    50                     {
    51                         while(left < right && A[left+1]==0)
    52                         {
    53                             left ++;
    54                             leftResult ++;
    55                         }
    56                         left ++;
    57                         leftResult ++;
    58                     }
    59                     result += leftResult*rightResult;
    60                     left ++;
    61                     oneSum --;
    62                 }
    63             }
    64             return result;
    65         }
    66 };
  • 相关阅读:
    Codeforces 1105C Ayoub and Lost Array
    绍兴市acm竞赛
    CodeForces#520 div2 1062B
    CodeForces#520 div2 1062A
    1067A
    测试MathJax
    BZOJ1010 玩具装箱toy
    停止
    秽翼
    爆零
  • 原文地址:https://www.cnblogs.com/Asurudo/p/9879186.html
Copyright © 2011-2022 走看看