双指针
: 先对数组进行排序,然后再定义连个指针left
,right
//双指针法
public int findPairs1(int[] nums, int k){
Arrays.sort(nums);
int left = 0;
int right = 1;
int rs = 0;
while (right<nums.length){
int abs = nums[right]-nums[left];
//差值相等
if(abs==k){
rs++;
//跳过重复元素
while(right<nums.length-1&&nums[right] == nums[right+1]){
right++;
}
while(left<nums.length-1&&nums[left] == nums[left+1]){
left++;
}
left++;
right=left+1;
//假如绝对值大于k
}else if(abs>k){
//左指针右移动一步
left++;
if(left==right) right=left+1;
}else{
//有指针有移动和一步
right++;
}
}
return rs;
}