排序+二分查找
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"); } } }