【leetcode热题】 两数之和 II - 输入有序数组

给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列  ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。

以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1  index2

你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。

你所设计的解决方案必须只使用常量级的额外空间。

 

示例 1:

输入:numbers = [2,7,11,15], target = 9
输出:[1,2]
解释:2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。

示例 2:

输入:numbers = [2,3,4], target = 6
输出:[1,3]
解释:2 与 4 之和等于目标数 6 。因此 index1 = 1, index2 = 3 。返回 [1, 3] 。

示例 3:

输入:numbers = [-1,0], target = -1
输出:[1,2]
解释:-1 与 0 之和等于目标数 -1 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。

解法一

第 1 题 做过无序数组找两个数,里边的解法当然也可以用到这道题,利用了 HashMap,可以过去看一下。

第 15 题 找出三个数,使其和为目标值的题目中的解法中,其实我们将问题转换到了现在这道题,也可以过去看一下。具体的话,其实我们只需要首尾两个指针进行遍历即可。

public int[] twoSum(int[] numbers, int target) {
    int i = 0;
    int j = numbers.length - 1;
    while (i < j) {
        if (numbers[i] + numbers[j] == target) {
            return new int[] { i + 1, j + 1 };
        } else if (numbers[i] + numbers[j] < target) {
            i++;
        } else {
            j--;
        }
    }
    //因为题目告诉我们一定有解,所以这里随便返回了
    return new int[] { -1, -1 };
}

相关推荐

  1. leetcode II - 输入有序数组

    2024-03-17 12:04:01       47 阅读
  2. leetcode167 II - 输入有序数组

    2024-03-17 12:04:01       57 阅读
  3. Leetcode 167. II - 输入有序数组

    2024-03-17 12:04:01       39 阅读
  4. 167. II - 输入有序数组

    2024-03-17 12:04:01       33 阅读
  5. 面试经典150—— II - 输入有序数组

    2024-03-17 12:04:01       41 阅读
  6. 力扣-167. II - 输入有序数组(双指针)

    2024-03-17 12:04:01       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-17 12:04:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-17 12:04:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-17 12:04:01       82 阅读
  4. Python语言-面向对象

    2024-03-17 12:04:01       91 阅读

热门阅读

  1. 关于%和/

    2024-03-17 12:04:01       42 阅读
  2. leetcode116填充每个节点的下一个右侧节点指针

    2024-03-17 12:04:01       41 阅读
  3. 组合模式实战运用

    2024-03-17 12:04:01       44 阅读
  4. Android制作微信添加多个图片,放大图片

    2024-03-17 12:04:01       36 阅读
  5. C#使用Entity Framework Core处理数据库(三)

    2024-03-17 12:04:01       47 阅读
  6. C#验证哥德巴赫猜想

    2024-03-17 12:04:01       42 阅读
  7. (55)按身高排序

    2024-03-17 12:04:01       41 阅读
  8. pycharm如何创建虚拟环境

    2024-03-17 12:04:01       38 阅读
  9. Linux信号量(简易版)

    2024-03-17 12:04:01       43 阅读
  10. 机器学习中的 K-均值聚类算法及其优缺点

    2024-03-17 12:04:01       39 阅读