167. 两数之和2 - 输入有序数组

给你一个下标从 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] 。

提示:

  • 2 <= numbers.length <= 3 * 104
  • -1000 <= numbers[i] <= 1000
  • numbers 按 非递减顺序 排列
  • -1000 <= target <= 1000
  • 仅存在一个有效答案

方法1:(447ms)

    public int[] twoSum(int[] numbers, int target) {
        int[] result = new int[2];
        for (int i = 0; i < numbers.length; i++) {
            for (int j = numbers.length - 1; j > i; j--) {
                if (numbers[j] == target - numbers[i]){
                     result[0] = i + 1;
                     result[1] = j + 1;
                     return result;
                }
            }
        }
        return result;
    }

(1ms)

    public int[] twoSum(int[] numbers, int target) {
        int[] result = new int[2];
        int left = 0;
        int right = numbers.length - 1;
        while (true){
            if (numbers[left] + numbers[right] > target){
                right--;
            }else if (numbers[left] + numbers[right] < target){
                left++;
            }else {
                result[0] = left + 1;
                result[1] = right + 1;
                return result;
            }
        }
    }

相关推荐

  1. 167. 2 - 输入有序数组

    2024-01-19 02:40:02       54 阅读
  2. leetcode167 II - 输入有序数组

    2024-01-19 02:40:02       57 阅读
  3. Leetcode 167. II - 输入有序数组

    2024-01-19 02:40:02       39 阅读
  4. 167. II - 输入有序数组

    2024-01-19 02:40:02       33 阅读
  5. 力扣-167. II - 输入有序数组(双指针)

    2024-01-19 02:40:02       34 阅读

最近更新

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

    2024-01-19 02:40:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-19 02:40:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-19 02:40:02       82 阅读
  4. Python语言-面向对象

    2024-01-19 02:40:02       91 阅读

热门阅读

  1. 深度学习与药物发现在健康衰老中的应用

    2024-01-19 02:40:02       51 阅读
  2. DPDK trace 的简单使用

    2024-01-19 02:40:02       52 阅读
  3. 正则表达式

    2024-01-19 02:40:02       54 阅读
  4. React导航守卫(V6路由)

    2024-01-19 02:40:02       60 阅读
  5. 解决Reinitialized existing Git repository

    2024-01-19 02:40:02       57 阅读
  6. git push/pull/clone超时解决

    2024-01-19 02:40:02       49 阅读
  7. Crow:CROW_STATIC_DIRECTORY静态资源

    2024-01-19 02:40:02       54 阅读
  8. 安卓、ios系统详解

    2024-01-19 02:40:02       55 阅读
  9. nginx配置https( Windows Server)

    2024-01-19 02:40:02       60 阅读