一个排好序的数组,找出两数之和为x的所有组合双指针

Posted Roni

tags:

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

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6,INF = 0x3f3f3f3f;
int a[N];
int n,x;
void fun(int n)
{
    int left = 0, right = n-1;
    while(left < right)
    {
        int ans=a[left] + a[right];
        if(ans == x)
        {
            cout<<a[left]<<' '<<a[right]<<endl;
            left++, right--;
        }
        else if(ans < x)
        {
            left++;
        }
        else if(ans > x)
        {
            right--;
        }
    }
}
int main()
{
    cin>>n>>x;
    for(int i=0;i<n;i++) {
        cin>>a[i];
    }
    fun(n);
}
/*
9 16
1 2 3 5 6 7 11 13 15
*/

以上是关于一个排好序的数组,找出两数之和为x的所有组合双指针的主要内容,如果未能解决你的问题,请参考以下文章

Javascript已经排好序的数组,如何能快速找出a+b=8的所有组合的下标

2020java面试题(一百一十九)百度

将两个排好序的序列合并成一个(指针和数组分别实现)

1. 两数之和---双指针篇七

实现2个排好序的子序列合并

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