返回轨道
算法 · 2026-05-14 · 36 阅读

P3 有序数组中求和为给定值的两个数

算法 36 阅读

信号摘要

难度:Easy · 时长:04:11 · leetcode 167 · lintcode 608

P3 有序数组中求和为给定值的两个数

未对外公开播放权限
点击查看说明

描述

这个题目说的是,给你一个整数数组,并且这个数组是按递增排序的,你要找到数组中的两个整数,它们的和等于给定的目标值,然后返回它们的下标。题目假设给你的数组总是有且只有一个解,而且同一个元素不能使用两次。另外,返回结果的下标要从 1 开始。

比如说给你的数组是:

1, 2, 3, 6, 8, 11

目标值是 10。那么,满足条件的两个整数是,2 和 8,它们的和是 10。所以你要返回它们的下标是 [2, 5]。

代码

public class AlgoCasts {

  // Time: O(n), Space: O(1)
  public int[] getTwoNumSumToGivenValue(int[] numbers, int target) {
    int i = 0, j = numbers.length - 1;
    while (i < j) {
      if (numbers[i] + numbers[j] > target) --j;
      else if (numbers[i] + numbers[j] < target) ++i;
      else return new int[]{i + 1, j + 1};
    }
    return new int[]{-1, -1};
  }

}

📡 通讯频道