【算法日记2】1534. 统计好三元组


前言

最近好几天没有更新,一直在忙,今天抽空练一个简单题

题目

给你一个整数数组 arr ,以及 abc 三个整数。请你统计其中好三元组的数量。

如果三元组 (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 的绝对值。

返回 好三元组的数量

审题

注意到直接暴力循环法最直接,定义一个变量n作为数组的大小,然后三层for嵌套循环,使用abs函数求绝对值。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
int countGoodTriplets(vector<int>& arr, int a, int b, int c) {
int n = arr.size(), cnt = 0;
for (int i = 0; i < n ; ++i){
for(int j = i + 1; j < n ; ++j){
for(int k = j + 1; k < n ; ++k){
if (abs(arr[i] - arr[j]) <= a && abs(arr[j] - arr[k]) <= b && abs(arr[i] - arr[k])<= c){
++cnt;
}
}
}

}
return cnt;
}
};

收获

对于这几天来第一次继续学算法,对我收获颇深,特别是对于for循环的三层嵌套和abs函数的使用。


文章作者: 上江 Yayoi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 上江 Yayoi !
  目录