快速寻找满足条件的两/三个数

来源:互联网 发布:jenkins部署php 编辑:程序博客网 时间:2024/04/30 09:14

1.两个数

void f(vector<int> A,int sum){    sort(A.begin(),A.end());    for(int i=0,j=A.size()-1;i<j;)    {        if(A[i]+A[j]==sum)cout<<A[i++]<<" "<<A[j--]<<endl;        else if(A[i]+A[j]<sum)++i;        else --j;    }}
2.三个数
void f(vector<int> A,int sum){    int subsum;    sort(A.begin(),A.end());    for(int i=0;i<=n-3;++i)    {        subsum=sum-A[i];        for(int j=i+1,k=A.size()-1;j<k;)        {            if(A[j]+A[k]==subsum)cout<<A[i]<<" "<<A[j++]<<" "<<A[k--]<<endl;            else if(A[j]+A[k]<subsum)++j;            else --k;        }    }}


0 0
原创粉丝点击