Welcome to Subscribe On Youtube

1534. Count Good Triplets

Description

Given an array of integers arr, and three integers ab 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:

  • 3 <= arr.length <= 100
  • 0 <= arr[i] <= 1000
  • 0 <= a, b, c <= 1000

Solutions

  • class Solution {
        public int countGoodTriplets(int[] arr, int a, int b, int c) {
            int n = arr.length;
            int ans = 0;
            for (int i = 0; i < n; ++i) {
                for (int j = i + 1; j < n; ++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) {
                            ++ans;
                        }
                    }
                }
            }
            return ans;
        }
    }
    
  • class Solution {
    public:
        int countGoodTriplets(vector<int>& arr, int a, int b, int c) {
            int n = arr.size();
            int ans = 0;
            for (int i = 0; i < n; ++i) {
                for (int j = i + 1; j < n; ++j) {
                    for (int k = j + 1; k < n; ++k) {
                        ans += abs(arr[i] - arr[j]) <= a && abs(arr[j] - arr[k]) <= b && abs(arr[i] - arr[k]) <= c;
                    }
                }
            }
            return ans;
        }
    };
    
  • class Solution:
        def countGoodTriplets(self, arr: List[int], a: int, b: int, c: int) -> int:
            ans, n = 0, len(arr)
            for i in range(n):
                for j in range(i + 1, n):
                    for k in range(j + 1, n):
                        ans += (
                            abs(arr[i] - arr[j]) <= a
                            and abs(arr[j] - arr[k]) <= b
                            and abs(arr[i] - arr[k]) <= c
                        )
            return ans
    
    
  • func countGoodTriplets(arr []int, a int, b int, c int) (ans int) {
    	n := len(arr)
    	for i := 0; i < n; i++ {
    		for j := i + 1; j < n; j++ {
    			for k := j + 1; k < n; k++ {
    				if abs(arr[i]-arr[j]) <= a && abs(arr[j]-arr[k]) <= b && abs(arr[i]-arr[k]) <= c {
    					ans++
    				}
    			}
    		}
    	}
    	return
    }
    
    func abs(x int) int {
    	if x < 0 {
    		return -x
    	}
    	return x
    }
    

All Problems

All Solutions