Subarray Sums I

Given an array of n positive integers, your task is to count the number of subarrays having sum x.

Example:

Input: n = 5, m = 7, arr = {2, 4, 1, 2, 7}
Output: 3

Approach

Java

import java.util.HashMap;

public class SubArraySumI {
    public static void main(String[] args) {

        long n = 5, m = 7;

        long[] arr = { 24127 };

        System.out.println(subArraySumI(n, m, arr));

    }

    static long subArraySumI(long nlong mlong[] arr) {

        HashMap<LongLongmp = new HashMap<LongLong>();
        mp.put((long0mp.getOrDefault(0, (long0) + 1);
        long sum = 0;
        long ans = 0;
        for (int i = 0; i < n; i++) {
            sum += arr[i];
            mp.put(sum, mp.getOrDefault(sum, (long0) + 1);
            ans += mp.getOrDefault(sum - m, (long0);
        }
        return ans;
    }

}

C++

#include <bits/stdc++.h>
using namespace std;

long long subArraySumI(long long nlong long m,
                       vector<long long&arr)
{

    map<long longlong long> mp;
    mp[0]++;
    long long sum = 0;
    long long ans = 0;
    for (long long i = 0; i < n; i++)
    {
        sum += arr[i];
        mp[sum]++;
        ans += mp[sum - m];
    }
    return ans;
}

int main()
{
    long long n = 5, m = 7;

    vector<long long> arr = {24127};

    cout << subArraySumI(n, m, arr) << "\n";

    return 0;
}


No comments:

Post a Comment