Sort by

recency

|

3092 Discussions

|

  • + 0 comments

    Java Solution

    Using Sliding Window Protocal O(n)

     public static int birthday(List<Integer> s, int d, int m) {
        // Write your code here
            int count = 0 ;
            
            int sum = 0 ;
            for(int i = 0 ; i < m ; i++){
                sum += s.get(i);
            }
            if(sum == d){
                count++;
            }
            
            for(int i = m ; i < s.size() ; i ++){
                sum = sum - s.get(i-m) + s.get(i);
                if(sum == d){
                    count++;
                }
            }
            return count;
        }
    
  • + 1 comment

    TypeScript ugly one-liner:

    function birthday(s: number[], d: number, m: number): number {
      return s.flatMap((_, i) => [s.slice(i, m + i)]).filter((arr) => arr.reduce((a, b) => a + b, 0) === d).length;
    }
    
  • + 0 comments
    int birthday(vector<int> s, int d, int m) {
        std::vector<int>::iterator left = s.begin();
        std::vector<int>::iterator right = left + m; // points behind sliding window
        
        int sum = std::accumulate(left, right, 0);
        int numWays = sum == d ? 1 : 0;
        
        while (right != s.end()) {
            sum = sum - *left + *right; // update sum
            left++; right++; // and move the sliding window
            
            if (sum == d)
                numWays++;
        }
        
        return numWays;
    }
    
  • + 1 comment

    O(n): function birthday(s, d, m) { // Write your code here let count = 0; for (let i=0; i 0 ? s[i-1]: 0); if (i == m -1 && s[i] == d) { count += 1 } if (i > m - 1 && s[i] - s[i-m] == d) { count += 1 } } return count; }

  • + 0 comments

    Here is my solution, using JavaScript

    function birthday(s, d, m) {
        // Write your code here
        let count = 0;
        while (s.length >= m){
          let sum = 0;
          // sum terms
          for(let i=0; i<m; i++){
            sum += s[i];
        }
        if(sum===d) count++;    
        s.shift();
        } 
        return count;
    }