跳至主要內容

给定数对的和


给定数对的和

题目

给定一个有序数字数组和一个目标和,在数组中找到一对和等于给定目标的数字。写一个函数返回两个数字(即一对)的索引,使它们加起来等于给定的目标。
示例1:

输入:[1, 2, 3, 4, 6], target=6
输出:[1, 3]
解释:索引位置为1和为3上的数字之和为6: 2+4=6

示例2:

输入:[2, 5, 9, 11], target=11
输出:[0, 2]
解释:索引位置为0和为2上的数字之和为11: 0+2=11

解法1:双指针

class PairWithTargetSum {

  public static int[] search(int[] arr, int targetSum) {
    int left = 0, right = arr.length - 1;
    while (left < right) {
      int currentSum = arr[left] + arr[right];
      if (currentSum == targetSum)
        return new int[] { left, right };

      if (targetSum > currentSum)
        left++;
      else
        right--;
    }
    return new int[] { -1, -1 };
  }

  public static void main(String[] args) {
    int[] result = PairWithTargetSum.search(new int[] { 1, 2, 3, 4, 6 }, 6);
    System.out.println("Pair with target sum: [" + result[0] + ", " + result[1] + "]");
    result = PairWithTargetSum.search(new int[] { 2, 5, 9, 11 }, 11);
    System.out.println("Pair with target sum: [" + result[0] + ", " + result[1] + "]");
  }
}
上次编辑于:
贡献者: Neil