2367. 算术三元组的数目
标签:简单,枚举
题目:给你一个下标从 0 开始、严格递增 的整数数组 nums
和一个正整数 diff
。如果满足下述全部条件,则三元组 (i, j, k)
就是一个 算术三元组 :
i < j < k
,nums[j] - nums[i] == diff
且nums[k] - nums[j] == diff
返回不同 算术三元组 的数目。
思路:将i,j,k遍历,i从0开始到nums.length-2(i,j,k为正整数,若i大于nums.length-2,则j,k超出范围),j 从i+1开始到nums.length-1,k从j+1开始到nums.length,每得到一组三元组,进行一次判断,当nums[j] - nums[i] == diff
且nums[k] - nums[j] == diff时,累计加一
代码如下:
class Solution {
public int arithmeticTriplets(int[] nums, int diff) {
int count = 0;
for(int i = 0; i < nums.length - 2; i++){
for(int j = i + 1; j < nums.length - 1; j++){
for(int k = j + 1; k < nums.length; k++){
if(nums[j] - nums[i] == diff && nums[k] - nums[j] == diff){
count++;
}
}
}
}
return count;
}
}
1534. 统计好三元组
标签:简单,枚举
给你一个整数数组 arr
,以及 a
、b
、c
三个整数。请你统计其中好三元组的数量。
如果三元组 (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
的绝对值。
返回 好三元组的数量 。
思路:将i,j,k遍历,i从0开始到nums.length-2(i,j,k为正整数,若i大于nums.length-2,则j,k超出范围),j 从i+1开始到nums.length-1,k从j+1开始到nums.length,每得到一组三元组,进行一次判断,当|arr[i] - arr[j]| <= a,|arr[j] - arr[k]| <= b,|arr[i] - arr[k]| <= c时,累计加1,绝对值部分使用Math的abs方法
代码如下:
class Solution {
public int countGoodTriplets(int[] arr, int a, int b, int c) {
int count = 0;
for(int i = 0; i < arr.length - 2; i++){
for(int j = i + 1; j < arr.length - 1; j++){
for(int k = j + 1; k < arr.length; 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;
}
}