如何解决Leetcode 2sum / 3sum问题中的逻辑问题

时间:2019-10-05 07:05:04

标签: java logical-or

我对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,我认为我的逻辑有误,但是我不确定这在哪里

0 个答案:

没有答案