用一个数组来当哈希表,直接判断元素是否存在
一开始采用的布尔类型的数组,部分样例无法通过,是因为当a[i] m-a[i]的值相等的时候,无法判断他的个数,所以采用了int类型的数组进行了改进,在循环的过程中进行特判
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
public class 找硬币 {
/**
* @param args
*/
static final int N=100010;
static Scanner scanner = new Scanner(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
int n=scanner.nextInt();
int m=scanner.nextInt();
int a[]=new int [N];
int b[]=new int [N];
for(int i=0;i<n;i++){
a[i]=scanner.nextInt();
b[a[i]]++;
}
Arrays.sort(a,0,n);
boolean fl=false;
for(int i=0;a[i]<m && i<n;i++){
int v=a[i];
int vv=m-a[i];
if(v!=vv && b[v]!=0 && b[vv]!=0){
System.out.println(v+ " "+vv);
fl=true;
break;
}
if(v==vv && b[v]>=2){
System.out.println(v+ " "+vv);
fl=true;
break;
}
}
if(!fl){
System.out.println("No Solution");
}
}
}