本文共 1275 字,大约阅读时间需要 4 分钟。
为了解决这个问题,我们需要统计一个整数数组中满足特定条件的三元组数量。给定数组 arr
和三个整数 a
、b
、c
,找出所有满足以下条件的三元组 (i, j, k)
:
i < j < k
。|arr[i] - arr[j]| ≤ a
。|arr[j] - arr[k]| ≤ b
。|arr[i] - arr[k]| ≤ c
。我们可以使用暴力枚举的方法来解决这个问题。遍历所有可能的三元组 (i, j, k)
,并检查每个三元组是否满足上述所有条件。由于数组长度最多为100,三重循环的时间复杂度为 O(n^3),在现代计算机上是可以接受的。
public class Solution1534 { public int countGoodTriplets(int[] arr, int a, int b, int c) { int count = 0; int n = arr.length; 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) { count++; } } } } return count; } public static void main(String[] args) { int[] arr = {3, 0, 1, 1, 9, 7}; int a = 7, b = 2, c = 3; Solution1534 s = new Solution1534(); System.out.println(s.countGoodTriplets(arr, a, b, c)); }}
count
用于统计满足条件的三元组数量。(i, j, k)
,确保满足 i < j < k
的条件。a
、b
和 c
。count
增加。这种方法直接且简洁,虽然时间复杂度较高,但对于给定的数组长度范围是可行的。
转载地址:http://tiniz.baihongyu.com/