Difficulty: Easy
Topics:
Array, Brute Force
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.
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)].
Input: arr = [1,1,2,2,3], a = 0, b = 0, c = 1
Output: 0
Explanation: No triplet satisfies all conditions.
https://leetcode.com/problems/count-good-triplets/description
Loading component...
Loading component...
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
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 Function is not required.