title: Count Pairs Difference Equal K 1
signature: class Solution {
  
      public Integer countPairsDifferenceEqualK1(ArrayList<Integer> arr, Integer n, Integer k) {
test_code: import static java.util.Map.entry;  
  import java.util.*;
  import java.lang.*;
  // TESTING CODE 
  // ============================================
  class QuestionEvaluator {
      public static String validateSolution(ArrayList<Integer> arr, Integer n, Integer k, Integer expected){
          try{
              Driver driver = new Driver();
              if (driver.run(arr, n, k,expected)){
                  return "PASSED";
              }
              return "FAILED";
              
          } catch (Exception exception_obj){
              return exception_obj.getClass().getSimpleName();
          }
  
      }
      public static void main(String[] args) {
          String result;
          result = validateSolution(new ArrayList<>(Arrays.asList(5, 5, 10, 19, 29, 32, 40, 60, 65, 70, 72, 89, 92)), 7, 12, 0);
          System.out.println(String.format("%s%s","TEST-0...",result));    
      
          result = validateSolution(new ArrayList<>(Arrays.asList(-98, -90, -88, -82, -80, -78, -74, -74, -72, -62, -58, -58, -56, -52, -48, -46, -38, -38, -30, -12, -10, 4, 8, 8, 14, 22, 24, 26, 36, 40, 40, 48, 56, 58, 58, 58, 60, 62, 64, 68, 68, 74, 84)), 24, 36, 7);
          System.out.println(String.format("%s%s","TEST-1...",result));    
      
          result = validateSolution(new ArrayList<>(Arrays.asList(0, 0, 1)), 1, 1, 0);
          System.out.println(String.format("%s%s","TEST-2...",result));    
      
          result = validateSolution(new ArrayList<>(Arrays.asList(1, 7, 13, 14, 16, 29, 34, 42, 44, 49, 59, 62, 65, 66, 70, 71, 73, 73, 76, 80, 96, 96)), 12, 16, 1);
          System.out.println(String.format("%s%s","TEST-3...",result));    
      
          result = validateSolution(new ArrayList<>(Arrays.asList(-98, -88, -58, -56, -48, -34, -22, -18, -14, -14, -8, -4, -2, 2, 18, 38, 42, 46, 54, 68, 70, 90, 94, 96, 98)), 23, 22, 4);
          System.out.println(String.format("%s%s","TEST-4...",result));    
      
          result = validateSolution(new ArrayList<>(Arrays.asList(0, 1, 1)), 2, 1, 1);
          System.out.println(String.format("%s%s","TEST-5...",result));    
      
          result = validateSolution(new ArrayList<>(Arrays.asList(11, 43, 50, 58, 60, 68, 75)), 4, 4, 0);
          System.out.println(String.format("%s%s","TEST-6...",result));    
      
          result = validateSolution(new ArrayList<>(Arrays.asList(-80, -56, -10, 0, 6, 8, 24, 42, 52, 86, 88, 94)), 11, 9, 0);
          System.out.println(String.format("%s%s","TEST-7...",result));    
      
          result = validateSolution(new ArrayList<>(Arrays.asList(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), 29, 30, 0);
          System.out.println(String.format("%s%s","TEST-8...",result));    
      
          result = validateSolution(new ArrayList<>(Arrays.asList(4, 7, 9, 9, 14, 34, 34, 36, 50, 54, 80, 81, 99)), 9, 8, 0);
          System.out.println(String.format("%s%s","TEST-9...",result));    
      
      }
  }
  
  class Driver{
      public boolean run(ArrayList<Integer> arr, Integer n, Integer k, Integer expected){
  
          PLACEHOLDER_CLS_NAME sol = new PLACEHOLDER_CLS_NAME();
          return validateSolution(sol.PLACEHOLDER_FN_NAME(arr, n, k),expected);
      }
      
      public boolean validateSolution(Integer actual, Integer expected){
          return actual.equals(expected);
      }
  }
  
  
  // SOLUTION CODE
  // ============================================
  PLACEHOLDER_CODE_BODY
source_py: def count_pairs_difference_equal_k_1(arr, n, k):
      count = 0
      arr.sort()
      l = 0
      r = 0
      while (r < n):
          if ((arr[r] - arr[l]) == k):
              count += 1
              l += 1
              r += 1
          elif ((arr[r] - arr[l]) > k):
              l += 1
          else:
              r += 1
      return count
source_cpp: int count_pairs_difference_equal_k_1(vector<int> arr, int n, int k) {
    int count = 0;
    sort(arr.begin(), arr.end());
    int l = 0;
    int r = 0;
    while ( r < n ) {
      if ( arr [ r ] - arr [ l ] == k ) {
        count ++;
        l ++;
        r ++;
      }
      else if ( arr [ r ] - arr [ l ] > k ) l ++;
      else r ++;
    }
    return count;
  }