Skip to content
Blogster on GitHub Dinesh on Twitter

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

链接

思路

该数组是一个非递减顺序排列,找到相加两个数之和等于目标数。

我们可以使用两个指针来找到答案,需要利用非递减顺序这一个条件,使用双向双指针算法

  1. 当大于target将指针j左移

  2. 当小于target将指针i右移

  3. 等于直接返回

1

代码

class Solution {
    public int[] twoSum(int[] nums, int target) {

        int n = nums.length;
        
        int i = 0;
        int j = n - 1;

        while (true) {
            int sum = nums[i] + nums[j];
            if (sum == target) return new int[] {i + 1, j + 1};
            else if (sum > target) j--;
            else i++;
        }
    }
}