雙指針
: 先對數組進行排序,然後再定義連個指針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;
}