Understand Count Good Triplets Problem

Problem Name: Count Good Triplets
Problem Description:

Count Good Triplets

Difficulty: Easy

Topics:
Array, Brute Force


Problem Statement

Given an array of integers arr, and three integers a, b, and c. You need to find the number of good triplets.

A triplet (arr[i], arr[j], arr[k]) is good if the following conditions are true:

  • 0 <= i < j < k < arr.length
  • |arr[i] - arr[j]| <= a
  • |arr[j] - arr[k]| <= b
  • |arr[i] - arr[k]| <= c

Where |x| denotes the absolute value of x.

Return the number of good triplets.


Example 1

Input: arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3 Output: 4 Explanation: There are 4 good triplets: [(3,0,1), (3,0,1), (3,1,1), (0,1,1)].

Example 2

Input: arr = [1,1,2,2,3], a = 0, b = 0, c = 1 Output: 0 Explanation: No triplet satisfies all conditions.

Constraints

3arr.length1003 \le \text{arr.length} \le 100 0arr[i]10000 \le \text{arr}[i] \le 1000 0a,b,c10000 \le a,\, b,\, c \le 1000
Category:
  • Arrays
Programming Language:
  • Java
Reference Link:

https://leetcode.com/problems/count-good-triplets/description

Online IDE

Scroll down for output
Java
Output:

Loading component...

Loading component...

Tracking code (View only. In case you want to track the code, click this button):
Main Function:

INPUT: arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3

Output: 4

public static void main(String[] args) {

int[] arr1 = {3, 0, 1, 1, 9, 7};

int a1 = 7, b1 = 2, c1 = 3;

int result1 = countGoodTriplets(arr1, a1, b1, c1);

System.out.println("Number of good triplets (Test Case 1): " + result1);

int[] arr2 = {1, 1, 2, 2, 3};

int a2 = 0, b2 = 0, c2 = 1;

int result2 = countGoodTriplets(arr2, a2, b2, c2);

System.out.println("Number of good triplets (Test Case 2): " + result2);

}//function end

Helper Function:

public static int countGoodTriplets(int[] arr, int a, int b, int c) {

int good = 0;

int n = arr.length;

for (int i = 0; i < n - 2; i++) {

for (int j = i + 1; j < n - 1; j++) {

for (int k = j + 1; k < n; k++) {

if (Math.abs(arr[i] - arr[j]) <= a && Math.abs(arr[j] - arr[k]) <= b && Math.abs(arr[i] - arr[k]) <= c) {

good++;

} //If End

} //Loop End

} //Loop End

} //Loop End

return good;

} // Function End

Utility Functions and Global variables:

Utility Function is not required.