Count Good Triplets

easy array enumeration

Problem

Given an array arr and three integers a, b, c, count triplets (i, j, k) with i < j < k such that |arr[i]−arr[j]| ≤ a, |arr[j]−arr[k]| ≤ b, and |arr[i]−arr[k]| ≤ c.

Inputarr = [3,0,1,1,9,7], a=7, b=2, c=3
Output4
Four index triples satisfy all three conditions.

def count_good_triplets(arr, a, b, c):
    n = len(arr)
    count = 0
    for i in range(n):
        for j in range(i + 1, n):
            if abs(arr[i] - arr[j]) > a:
                continue
            for k in range(j + 1, n):
                if abs(arr[j] - arr[k]) <= b and abs(arr[i] - arr[k]) <= c:
                    count += 1
    return count
function countGoodTriplets(arr, a, b, c) {
  const n = arr.length;
  let count = 0;
  for (let i = 0; i < n; i++) {
    for (let j = i + 1; j < n; j++) {
      if (Math.abs(arr[i] - arr[j]) > a) continue;
      for (let k = j + 1; k < n; k++) {
        if (Math.abs(arr[j] - arr[k]) <= b && Math.abs(arr[i] - arr[k]) <= c) count++;
      }
    }
  }
  return count;
}
class Solution {
    public int countGoodTriplets(int[] arr, int a, int b, int c) {
        int n = arr.length, count = 0;
        for (int i = 0; i < n; i++)
            for (int j = i + 1; j < n; j++) {
                if (Math.abs(arr[i] - arr[j]) > a) continue;
                for (int k = j + 1; k < n; k++)
                    if (Math.abs(arr[j] - arr[k]) <= b && Math.abs(arr[i] - arr[k]) <= c) count++;
            }
        return count;
    }
}
int countGoodTriplets(vector<int>& arr, int a, int b, int c) {
    int n = arr.size(), count = 0;
    for (int i = 0; i < n; i++)
        for (int j = i + 1; j < n; j++) {
            if (abs(arr[i] - arr[j]) > a) continue;
            for (int k = j + 1; k < n; k++)
                if (abs(arr[j] - arr[k]) <= b && abs(arr[i] - arr[k]) <= c) count++;
        }
    return count;
}
Time: O(n³) Space: O(1)