题目描述
给你一个下标从 0 开始、严格递增 的整数数组 nums 和一个正整数 diff 。如果满足下述全部条件,则三元组 (i, j, k) 就是一个 算术三元组 :
- i < j < k ,
- nums[j] - nums[i] == diff 且
- nums[k] - nums[j] == diff
返回不同 算术三元组 的数目。
示例
输入:nums = [0,1,4,6,7,10], diff = 3
输出:2
解释:
(1, 2, 4) 是算术三元组:7 - 4 == 3 且 4 - 1 == 3 。
(2, 4, 5) 是算术三元组:10 - 7 == 3 且 7 - 4 == 3 。
实现逻辑
用Set存下数组中的每个元素,然后依次遍历,看nums[i]+diff 及nums[i]+diff+diff是否在set中存在即可。
import java.util.HashSet;
import java.util.Set;
public class Solution2367 {
public static int arithmeticTriplets(int[] nums, int diff) {
Set set = new HashSet();
for(int i=0; i<nums.length; i++){
set.add(nums[i]);
}
int result = 0;
for(int i=0; i<nums.length; i++){
if(set.contains(nums[i]+diff) && set.contains(nums[i]+diff+diff)){
result++;
}
}
return result;
}
public static void main(String[] args) {
int nums[]= new int[]{4,5,6,7,8,9};
int result = arithmeticTriplets(nums,2);
System.out.println(result);
}
}
联系作者
微信公众号
xiaomingxiaola
(BossLiu)
QQ群
58726094
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 384276224@qq.com