什麼是two pointers

#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;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章