• + 0 comments

    2 approaches in C++

    reusing existing sum of sub array

    int birthday(vector<int> s, int d, int m) {    
        if (s.size() < m) { 
            return 0; 
        } else {
            int sum {};
            int count {};
            for (int i=0; i<=s.size()-m; i++) {
                if (sum == 0) {
                    for (int j=0; j<m; j++) {
                        sum += s[j];
                    }
                } else {
                  sum -= s[i-1];  
                  sum += s[i-1+m];  
                }
                
                if (sum == d) count++;
            }
            return count;
        }    
    }
    

    brute force approach

    int birthday(vector<int> s, int d, int m) {    
            if (s.size() < m) { 
                return 0; 
            }
            
            else if (s.size() == m) {
                int sum = 0;
                for (int i : s) {
                    sum += i;
                }
                return d == sum;
            } 
            
            else {
                int count {};
                for (int j = 0; j <= s.size()-m; j++) {
                    int sum {};
                    for (int i = j; i < j+m; i++) {
                        sum += s[i];
                    }
                    if (sum == d) count ++;
                }
                return count;    
            }																 
    }