ARTS Week 10
Algorithm 本周的算法题为 1534. 统计好三元组 给你一个整数数组 arr ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。 如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组 。 0 <= i < j < k < arr.length |arr[i] - arr[j]| <= a |arr[j] - arr[k]| <= b |arr[i] - arr[k]| <= c 其中 |x| 表示 x 的绝对值。 返回 好三元组的数量。 示例 1: 输入:arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3 输出:4 解释:一共有 4 个好三元组:[(3,0,1), (3,0,1), (3,1,1), (0,1,1)] 。 实现代码如下: var countGoodTriplets = function (arr, a, b, c) { let resultCount = 0 for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { for (let k = j + 1; k < arr.length; k++) { if (0 <= i < j < k < arr.length && Math.abs(arr[i] - arr[j]) <= a && Math.abs(arr[j] - arr[k]) <= b && Math.abs(arr[i] - arr[k]) <= c) { ++resultCount } } } } return resultCount } 解题思路: 要得到好三元组的数量,要先判断出i、j、k能有多少种组合,使用3个for来遍历,因为0 <= i < j < k < arr.length的条件,可以i从0开始,j从i+1开始,k从j+1开始,依次得出arr[i], arr[j], arr[k]存在的组合,然后使用4个条件进行判断,使用resultCount来计数即可。 ...