双指针1两数之和(easy)

Posted 念奕玥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双指针1两数之和(easy)相关的知识,希望对你有一定的参考价值。

双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。
若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的
区域即为当前的窗口),经常用于区间搜索
若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是
排好序的。

leetcode 167. 两数之和 II - 输入有序数组
在这里插入图片描述
分析:给定数组已排好序,寻找和为target的两个数字。
思路:两个指针 i , j i,j ij分别指向数组的头和尾,移动方向相反。当两数之和大于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. 两数之和---双指针篇七

算法哈希表 ( 两数之和 )

数据结构与算法双指针思想——两数之和

LeetCode日记——算法双指针专题

双指针 - 两数之和 & 两数平方和

16. 最接近的三数之和-排序+两数之和+双指针