营销网站建站公司/网络推广费用大概价格
文章目录
- 题目
- 标题和出处
- 难度
- 题目描述
- 要求
- 示例
- 数据范围
- 解法
- 思路和算法
- 代码
- 复杂度分析
题目
标题和出处
标题:统计好三元组
出处:1534. 统计好三元组
难度
1 级
题目描述
要求
给你一个整数数组 arr\texttt{arr}arr,以及 a\texttt{a}a、b\texttt{b}b、c\texttt{c}c 三个整数。请你统计其中好三元组的数量。
如果三元组 (arr[i],arr[j],arr[k])\texttt{(arr[i], arr[j], arr[k])}(arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个好三元组。
- 0≤i<j<k<arr.length\texttt{0} \le \texttt{i} < \texttt{j} < \texttt{k} < \texttt{arr.length}0≤i<j<k<arr.length
- |arr[i]-arr[j]|≤a\texttt{|arr[i] - arr[j]|} \le \texttt{a}|arr[i] - arr[j]|≤a
- |arr[j]-arr[k]|≤b\texttt{|arr[j] - arr[k]|} \le \texttt{b}|arr[j] - arr[k]|≤b
- |arr[i]-arr[k]|≤c\texttt{|arr[i] - arr[k]|} \le \texttt{c}|arr[i] - arr[k]|≤c
其中 |x|\texttt{|x|}|x| 表示 x\texttt{x}x 的绝对值。
返回好三元组的数量。
示例
示例 1:
输入:arr=[3,0,1,1,9,7],a=7,b=2,c=3\texttt{arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3}arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3
输出:4\texttt{4}4
解释:一共有 4\texttt{4}4 个好三元组:[(3,0,1),(3,0,1),(3,1,1),(0,1,1)]\texttt{[(3,0,1), (3,0,1), (3,1,1), (0,1,1)]}[(3,0,1), (3,0,1), (3,1,1), (0,1,1)]。
示例 2:
输入:arr=[1,1,2,2,3],a=0,b=0,c=1\texttt{arr = [1,1,2,2,3], a = 0, b = 0, c = 1}arr = [1,1,2,2,3], a = 0, b = 0, c = 1
输出:0\texttt{0}0
解释:不存在满足所有条件的三元组。
数据范围
- 3≤arr.length≤100\texttt{3} \le \texttt{arr.length} \le \texttt{100}3≤arr.length≤100
- 0≤arr[i]≤1000\texttt{0} \le \texttt{arr[i]} \le \texttt{1000}0≤arr[i]≤1000
- 0≤a,b,c≤1000\texttt{0} \le \texttt{a, b, c} \le \texttt{1000}0≤a, b, c≤1000
解法
思路和算法
这道题目要求统计给定的整数数组 arr\textit{arr}arr 中的好三元组的数量。一个好三元组对应一个下标的三元组 (i,j,k)(i,j,k)(i,j,k),三个下标满足题目给定的条件。遍历数组中的每一个三元组,统计好三元组的数量即可。
代码
class Solution {public int countGoodTriplets(int[] arr, int a, int b, int c) {int triplets = 0;int length = arr.length;for (int i = 0; i < length; i++) {int num1 = arr[i];for (int j = i + 1; j < length; j++) {int num2 = arr[j];if (Math.abs(num1 - num2) <= a) {for (int k = j + 1; k < length; k++) {int num3 = arr[k];if (Math.abs(num2 - num3) <= b && Math.abs(num1 - num3) <= c) {triplets++;}}}}}return triplets;}
}
复杂度分析
-
时间复杂度:O(n3)O(n^3)O(n3),其中 nnn 是数组 arr\textit{arr}arr 的长度。需要使用三重循环遍历数组 arr\textit{arr}arr,对于每个三元组,可以确保下标的大小关系满足好三元组的要求,需要 O(1)O(1)O(1) 的时间判断三个元素的值是否满足好三元组的要求。
-
空间复杂度:O(1)O(1)O(1)。