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

2020-03-03  本文已影响0人  面向全麦面包编程

描述

这个题目说的是,给你一个整数数组,并且这个数组是按递增排序的,你要找到数组中的两个整数,它们的和等于给定的目标值,然后返回它们的下标。题目假设给你的数组总是有且只有一个解,而且同一个元素不能使用两次。另外,返回结果的下标要从 1 开始。
例如:[1, 2, 3, 6, 8, 11]
目标值是 10。那么,满足条件的两个整数是,2 和 8,它们的和是 10。所以你要返回它们在数组中的位置(索引+1)是 [2, 5]。

注意点

Tips

代码引用

public class getTwoNumSumToGivenValue_Order {
    /**
     * T:O(n) S:(1)
     *
     * @param nums   给定有序数组
     * @param target  给定目标值
     */
    public int[] getTwoNumSumToGivenValue(int[] nums, int target) {
        int i = 0, j = nums.length - 1;
        while (i < j) {
            if (nums[i] + nums[j] > target) {
                j--;
            } else if (nums[i] + nums[j] < target) {
                i++;
            } else {
                return new int[]{i + 1, j + 1};
            }
        }
        return new int[]{-1, -1};
    }
}
上一篇 下一篇

猜你喜欢

热点阅读