题目来源:
leetcode题目,网址:2367. 算术三元组的数目 - 力扣(LeetCode)
解题思路:
从前往后遍历数组,对数组中的每一个元素,查找 nums[i]+ diff ,nums[i] +2 *diff ,nums[i]+3*diff......直至某个值不存在,将查找到的元素个数与 2 之差 与 0 的较大值添加到计数结果中。遍历结束后,返回计数结果之和即可。
解题代码:
class Solution {
public int arithmeticTriplets(int[] nums, int diff) {
int res=0;
for(int i=0;i<nums.length;i++){
if(nums[i]<0)
continue;
int count=1;
int pre=nums[i];
for(int j=i+1;j<nums.length;j++){
if((nums[j]-pre)==diff){
pre=nums[j];
nums[j]=-1;
count++;
}else if(nums[j]-pre>diff){
break;
}
}
res+=count-2>0?count-2:0;
}
return res;
}
}
总结:
官方题解给出了三指针、哈希表和暴力循环的解法。