一. 题目
题目

示例

二. 方法一: 暴力法
解题思路
解题代码
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左右
版权声明:本文为bingque6535原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。