From d5dc5788bb85e59be150cd25ecaf26c1b190fb9f Mon Sep 17 00:00:00 2001 From: ankit351104 <91881708+ankit351104@users.noreply.github.com> Date: Thu, 27 Oct 2022 16:59:05 +0530 Subject: [PATCH] Subarray Sum Divisible by K (Leetcode 974) A classic sliding window approach in Java --- Medium/Subarray Sum Divisible by K.java | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Medium/Subarray Sum Divisible by K.java diff --git a/Medium/Subarray Sum Divisible by K.java b/Medium/Subarray Sum Divisible by K.java new file mode 100644 index 0000000..c1c9d24 --- /dev/null +++ b/Medium/Subarray Sum Divisible by K.java @@ -0,0 +1,27 @@ +class Solution { + public int subarraysDivByK(int[] nums, int k) { + int count =0; + int sum =0; + int rem =0; + HashMap map = new HashMap<>(); + map.put(0,1); //initially sum is 0 and it appeared once already + + for(int num:nums){ + sum+=num; + rem=sum%k; + + if(rem<0){ + rem+=k; // if k=7 and rem = -2 then rem+k =2 and the gap betwen 2 and -5 is 7 which is divisible by 7 + } + if(map.containsKey(rem)){ + count+=map.get(rem); + map.put(rem, map.get(rem)+1); + } + else{ + map.put(rem,1); + } + } + System.out.println(map.entrySet()); + return count; + } +} \ No newline at end of file