#include<cstdio>
#include<algorithm>
using namespace std;
int a[100010]={0};
int main(){
int i,j,m,n;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
/*for(i=0;i<n;i++)//複雜度爲O(n^2)寫法!
for(j=i+1;j<n;j++){
if(a[i]+a[j]==m)
printf("%d %d\n",a[i],a[j]);
} */
i=0;j=n-1;//時間複雜度爲O(n)的寫法!
while(j>i){
if(a[j]+a[i]==m) {
printf("%d %d\n",a[i++],a[j--]);
}
if(a[j]+a[i]>m) j--;
if(a[j]+a[i]<m) i++;
}
return 0;
}
什麼是two pointers
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.