概述
双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。
若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的
区域即为当前的窗口),经常用于区间搜索。
若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是
排好序的。
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)的全部内容,希望文章能够帮你解决【双指针】1、两数之和(easy)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复