# 1534. Count Good Triplets ## 題目概要 給定一個整數陣列 arr 和三個整數 a, b, c,你需要找到 Good Triplets 的數量。 Good Triplets 須滿足以下條件: * `0 <= i < j < k < arr.length` * `|arr[i] - arr[j]| <= a` * `|arr[j] - arr[k]| <= b` * `|arr[i] - arr[k]| <= c` 其中`|x|`表示 x 的絕對值。 請計算出 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. ``` ## 解題技巧 - 需要使用三個迴圈來解,不過第三個迴圈外面可以包一個判斷 `if (Math.abs(arr[i] - arr[j]) <= a)` 再繼續第三層迴圈,否則沒有必要。 ## 程式碼 ```javascript= /** * @param {number[]} arr * @param {number} a * @param {number} b * @param {number} c * @return {number} */ var countGoodTriplets = function(arr, a, b, c) { let result = 0; for (let i = 0; i < arr.length - 2; i++) { for (let j = i + 1; j <arr.length - 1; j++) { if (Math.abs(arr[i] - arr[j]) <= a) { for (let k = j + 1; k < arr.length; k++) { if (Math.abs(arr[j] - arr[k]) <= b && Math.abs(arr[i] - arr[k]) <= c) result++; continue; } } } } return result; }; ``` ![](https://i.imgur.com/X3oS4AF.png)