(算法练习)——两个指针(two pointers)

这个真的超级有用!
代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;

int main(){
	int numrecord[100];
	int n,m;
	while(scanf("%d",&n) != EOF){
		for(int i = 0;i <n;i++){
			scanf("%d",&numrecord[i]);
		}
		scanf("%d",&m);
		//如果是乱序,先排个序
		sort(numrecord,numrecord+n);
		//i,j的初始值
		int i = 0;
		int j = n - 1;
		//这种思路太棒了
		while(i <j){
			if(numrecord[i] + numrecord[j] == m){
				printf("%d %d\n",numrecord[i],numrecord[j]);
				i++;
				j--;
			}
			else if(numrecord[i] + numrecord[j]<m){
				i++;
			}
			else{
				j--;
			}
		}
		memset(numrecord,0,sizeof(numrecord));
	}
	return 0;
}
发布了105 篇原创文章 · 获赞 3 · 访问量 1953

猜你喜欢

转载自blog.csdn.net/weixin_42377217/article/details/104029056