Welcome to Subscribe On Youtube

1534. Count Good Triplets

Description

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:

  • 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
    }
    
  • function countGoodTriplets(arr: number[], a: number, b: number, c: number): number {
        let n = arr.length;
        let ans = 0;
        for (let i = 0; i < n; ++i) {
            for (let j = i + 1; j < n; ++j) {
                for (let 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;
    }
    
    
  • public 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;
        }
    }
    
    
  • impl Solution {
        pub fn count_good_triplets(arr: Vec<i32>, a: i32, b: i32, c: i32) -> i32 {
            let n = arr.len();
            let mut ans = 0;
    
            for i in 0..n {
                for j in i + 1..n {
                    for k in j + 1..n {
                        if (arr[i] - arr[j]).abs() <= a
                            && (arr[j] - arr[k]).abs() <= b
                            && (arr[i] - arr[k]).abs() <= c
                        {
                            ans += 1;
                        }
                    }
                }
            }
    
            ans
        }
    }
    
    

All Problems

All Solutions