fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. // your code goes here
  13. int[] arr = {1,3,2,4};
  14. int k = 1;
  15. System.out.println("no of good pairs are "+ cntOfGoodPairs(arr,k));
  16. }
  17. static int cntOfGoodPairs(int[] arr, int k){
  18. HashMap<Long,Long> map = new HashMap<>();
  19. map.put(0L,1L);
  20. long[] prefix = new long[arr.length];
  21. prefix[0] = arr[0];
  22. int cnt = 0;
  23. for(int i =1;i<arr.length;i++){
  24. prefix[i] = prefix[i-1]+arr[i];
  25. }
  26. for(int j=0;j<arr.length;j++){
  27. long modPrefix = ((prefix[j]%k -j%k+k)%k);
  28. cnt+=map.getOrDefault(modPrefix, 0L);
  29. map.put(modPrefix,map.getOrDefault(modPrefix, 0L)+1);
  30. }
  31. return cnt;
  32.  
  33. }
  34. }
Success #stdin #stdout 0.1s 53512KB
stdin
Standard input is empty
stdout
no of good pairs are 10