c_cpp 找到具有给定差异的一对
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 找到具有给定差异的一对相关的知识,希望对你有一定的参考价值。
//https://www.geeksforgeeks.org/find-a-pair-with-the-given-difference/
#include<iostream>
using namespace std;
int merge(int a[],int l,int m,int r){
int n1=m-l+1,n2=r-m;
int b[n1],c[n2];
for(int i=0;i<n1;i++)
b[i]=a[l+i];
for(int i=0;i<n2;i++)
c[i]=a[i+m+1];
int i=0,j=0,k=l;
while(i<n1 && j<n2){
if (b[i]<c[j])
a[k++]=b[i++];
else
a[k++]=c[j++];
}
while(i<n1)
a[k++]=b[i++];
while(j<n2)
a[k++]=c[j++];
}
int mergesort(int a[],int l,int r){
if(l<r){
int m=(l+r)/2;
mergesort(a,l,m);
mergesort(a,m+1,r);
merge(a,l,m,r);
}
}
int main(){
int n,x;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
cout<< "Enter the difference:";
cin>>x;
mergesort(a,0,n-1);
cout<<"Sorted array:\n";
for(int i=0;i<n;i++)
cout<<a[i]<< " ";
cout<<"\n";
int i=0,j=1,c=0;
while(i<n && j<n){
if(i!=j && a[j]-a[i]==x){
c++;
cout<< "Pair found ("<<a[i]<<", "<<a[j]<< ")";
exit(0);
}
else if(a[j]-a[i]>x)
i++;
else
j++;
}
if (c==0)
cout<< "pair not found!";
}
以上是关于c_cpp 找到具有给定差异的一对的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 从两个排序的数组中找到最接近的一对
c_cpp 具有给定总和的对
c_cpp 检查/断言类是否具有给定签名的方法。
c_cpp 给定一个数组,打印具有递增顺序的元素的最大子数组
c_cpp 找到给定链表的中间位置
c_cpp 找到与给定值最近的k个元素