leetcode 双指针算法--有序数组2数之和

mac2024-03-12  26

给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。

函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。

说明:

返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。 示例:

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

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

由于是有序数组。一定要抓住有序这个重点。不会白白给条件的 双指针则是从两头开始找。大了则后面的小一点。小了就前面的大一点。记住这个。遇到类似的都能联想到。

public static void main(String[] args) { // 重点是有序,双指针 int numbers[] = new int[]{2, 3, 6, 7}; int flag = 8; int j = numbers.length - 1; int i = 0; while (i < j) { if (numbers[i] + numbers[j] < flag) { i++; } else if (numbers[i] + numbers[j] > flag){ j--; } else { break; } } System.out.println(i); System.out.println(j); }
最新回复(0)