双指针1两数之和(easy)
Posted 念奕玥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双指针1两数之和(easy)相关的知识,希望对你有一定的参考价值。
双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。
若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的
区域即为当前的窗口),经常用于区间搜索。
若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是
排好序的。
leetcode 167. 两数之和 II - 输入有序数组
分析:给定数组已排好序,寻找和为target的两个数字。
思路:两个指针
i
,
j
i,j
i,j分别指向数组的头和尾,移动方向相反。当两数之和大于target,指针i右移;当两数之和小于target,指针j左移;等于时,直接返回i,j所在位置+1。
class Solution {
public int[] twoSum(int[] numbers, int target) {
int n=numbers.length;
if(n==0) return null;
// int[] res = new int[2];
int i=0,j=n-1;
while(i<j){
if(numbers[i]+numbers[j]>target) j--;
else if(numbers[i]+numbers[j]<target) i++;
else {
return new int[]{i+1,j+1};
}
}
return null;
}
}
以上是关于双指针1两数之和(easy)的主要内容,如果未能解决你的问题,请参考以下文章