跳至主要內容

57-和为s的两个数字

daipeng小于 1 分钟

输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。

双指针

使用两个指针,一头一尾,先计算头尾和,如果大了则尾指针前移一位(缩小),如果小了就头指针后移一位(扩大)。如果和一定,则两数距离越远则积越小。

public int[] twoSum(int[] nums, int target) {
      int i = 0;
        int j = nums.length - 1;
        while (i < j) {
            int value = nums[i] + nums[j];
            if (value > target) {
                j--;
            } else if (value == target) {
                return new int[]{nums[i], nums[j]};
            }else{
                i++;
            }
        }
        return null;
    }