Subarray Division 1

Sort by

recency

|

288 Discussions

|

  • + 0 comments

    Java - O(n)

        public static int birthday(List<Integer> s, int d, int m) {
            int count = 0;   // current sum of the window
            int steps = 0;   // current window size
            int total = 0;   // total valid segments
    
            for (int i = 0; i < s.size(); i++) {
                steps++;
                count += s.get(i);
    
                if (steps == m) {
                    if (count == d) {
                        total++;
                    }
    
                    // Instead of resetting, slide the window
                    count -= s.get(i - m + 1); // remove oldest element
                    steps--;                   // shrink window by 1
                }
            }
            return total;
        }
    
  • + 0 comments

    Java with Queue

    public static int birthday(List<Integer> s, int d, int m) {
        // Write your code here
        int count = 0;
        Queue<Integer> subarray = new LinkedList<>();
        
        for (int i = 0; i < s.size(); i++) {
            subarray.add(s.get(i));
            int currentSize = subarray.size();
            int sum = subarray.stream().mapToInt(Integer::intValue).sum();
            if (currentSize == m) {
                count = sum == d ? count + 1 : count;
                subarray.poll();
            } 
            
        }
        
        return count;
        }
    
  • + 0 comments

    Golang

    solutions := int32(0)
    for i := int32(0); i + m <= int32(len(s)); i++ {
        sum := int32(0)
        for j := int32(0); j < m; j++ {
            sum += s[i + j]
        }
        if sum == d {
            solutions++
        }
    }
    return solutions
    
  • + 0 comments
    int birthday(vector < int > s, int d, int m) {
        int ways = 0;
        for (int i = 0; i < s.size(); i++) {
            int sum = 0;
            for (int j = i; j < m + i; j++) {
                sum += s[j];
            }
            if (sum == d) {
                ways++;
            }
        }
        return ways;
    }
    
  • + 0 comments
    def birthday(s, d, m):
        # Write your code here
        ways=0
        end=m
        begin=0
        
        while end<=len(s):
            summ=0
            for i in range(begin,end):
                summ+=s[i]
            if summ==d:
                ways+=1
            end+=1
            begin+=1
        return ways