Subarray Division

https://www.hackerrank.com/challenges/the-birthday-bar/problem?isFullScreen=true

0(n^2):

 1 int birthday(vector<int> s, int d, int m) {
 2 
 3    int res=0;
 4    int i=0,d1=0,m1=0;
 5    for(int j=0;j<s.size();++j)
 6    {
 7       for (int k=j;k-j<m;++k)
 8       {
 9          d1+=s[k];
10          if(d1==d&&m-1==k-j)
11          {
12             res++;
13             break;
14            // d1=0;
15          }
16       }
17       d1=0;
18 
19    }
20    return res;
21 }

O(n+m):

 1 int birthday(vector<int> s, int d, int m) {
 2 
 3    int res=0;
 4    int sum=0;
 5    for(int i=0;i<m;++i)
 6    {
 7     sum+=s[i];
 8    }
 9    if(sum==d)
10    {
11     res++;
12    }
13    for(int i=m;i<s.size();++i)
14    {
15     sum=sum-s[i-m]+s[i];
16     if(sum==d)
17     {
18         res++;
19     }
20    }
21    
22    return res;
23 }

 

posted @ 2025-07-05 09:36  哒哒DaDa^_^  阅读(8)  评论(0)    收藏  举报