1048 Find Coins(two pointers解法)

Posted CSU迦叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1048 Find Coins(two pointers解法)相关的知识,希望对你有一定的参考价值。

1. 很典型的双指针的应用,将数组按照非降排列,两个指针从一头一尾开始包抄,若等于(等于要放在第一个)则返回结果结束程序,小于则左指针右移,大于则右指针左移。

2. 起初还担心,如果得到的结果不是那个较小数最小的怎么办,其实多虑,从两边逼近,得到的一定是这个结果。

3. 比起用散列解决这道题,双指针不用额外考虑两个数相等的情况,因为在序列中相等的两个数指针不一样,不用担心1个数当成两个用。

AC代码

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
#include<stdlib.h>
#include<time.h>

using namespace std;
typedef long long LL;

const int maxn = 100000;
const int INF = 1000000000;//INF:下确界  
const LL SUP = (1LL<<63)-1;//SUP:上确界 
const double eps = 1e-5;


int main(){
	
	int n,m;
	int A[maxn];
	
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++){
		scanf("%d",&A[i]);
	}
	
	sort(A,A+n);
	
	int i=0,j=n-1;
	while(i<j){
		if(A[i]+A[j]==m){
			printf("%d %d",A[i],A[j]);
			return 0;
		}
		else if(A[i]+A[j]<m)i++;
		else if(A[i]+A[j]>m)j--;
	}
	
	printf("No Solution");	
	
	return 0;
}

以上是关于1048 Find Coins(two pointers解法)的主要内容,如果未能解决你的问题,请参考以下文章

PAT1048:Find Coins

PAT 1048 Find Coins (25)

1048. Find Coins (25)

PAT 1048. Find Coins

1048. Find Coins (25)

PAT 甲级 1048 Find Coins