一. 题目
-
题目
-
示例
二. 方法一: 暴力法
-
解题思路
-
解题代码
def countGoodTriplets(self, arr: List[int], a: int, b: int, c: int) -> int: size = len(arr) count = 0 for i in range(0, size - 2): for j in range(i + 1, size - 1): for k in range(j + 1, size): if abs(arr[i] - arr[j]) <= a and abs(arr[j] - arr[k]) <= b and abs(arr[i] - arr[k]) <= c: count += 1 return count
-
分析
时间复杂度: O(n^3)
空间复杂度: O(1)
三. 方法二: 暴力法 + 裁剪
-
解题思路
-
解题代码
def countGoodTriplets(self, arr: List[int], a: int, b: int, c: int) -> int: size = len(arr) count = 0 for i in range(0, size - 2): for j in range(i + 1, size - 1): if abs(arr[i] - arr[j]) > a: continue for k in range(j + 1, size): if abs(arr[j] - arr[k]) <= b and abs(arr[i] - arr[k]) <= c: count += 1 return count
-
分析
时间复杂度: O(n^3)
空间复杂度: O(1)
相较于方法一, 运行时间降低了300ms左右