我对twosum有问题,这是 给定一个int数组num和一个int目标,找出数组中有多少个唯一对,使得它们的总和等于target。返回对数。
我的代码有时在测试用例中得到错误答案 例如nums = [1,2,3,4],目标= 5 我的代码只会返回1对。
这是我的代码
public int twoSum6(int[] nums, int target) {
int pair = 0;
...
Arrays.sort(nums);
int left = 0;
int right = nums.length - 1;
while(left < right){
if(nums[left] + nums[right] == target ){
pair++;
left++;
right--;
while(left < right && nums[left] == nums[left + 1] ){
left++;
}
while(left < right && nums[right] == nums[right - 1]){
right--;
}
}
if(nums[left] + nums[right] < target){
left++;
}else{
right--;
}
} return pair;
}
这是样本测试 输入:nums = [1、2、45、46、46],目标= 47 输出2 说明: 1 + 46 = 47 2 + 45 = 47
因此,如果测试用例为[1,2,3,4]并且目标为5,则该目标的实际输出为2 我的输出为1,我认为我的逻辑有误,但是我不确定这在哪里