排序+二分查找
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int[] data = new int[num];
scanner.nextLine();
String[] buffer = scanner.nextLine().split(" ");
for(int i = 0;i<num;i++){
data[i] = Integer.valueOf(buffer[i]);
}
int result = scanner.nextInt();
Arrays.sort(data);
int temp;
int big = data[num-1];
boolean flag = false;
for (int i = 0; i < num; i++) {
if(data[i] > big){
break;
}
temp = result-data[i];
int find = Arrays.binarySearch(data, i+1, num, temp);
if (find >= 0 && find > i){
System.out.println(data[i]+" "+temp);
flag = true;
}
}
if (flag == false){
System.out.println("NO");
}
}
} 


京公网安备 11010502036488号