利用头尾指针判断
import java.util.Scanner;
public class Main {
public static void fun(int[] arr,int key,int len){
int pre = 0;
int end = len-1;
while (pre < end){
if(arr[pre]+arr[end]<key){
pre++;
}else if(arr[pre]+arr[end]>key){
end--;
}else{
if((pre==0||end==len-1)||(arr[end]!=arr[end+1]&&arr[pre]!=arr[pre-1])){
System.out.println(arr[pre]+" "+arr[end]);
pre++;
end--;
}else if(arr[end]==arr[end+1]){
end--;
}else if(arr[pre]==arr[pre]-1){
pre++;
}
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int key = sc.nextInt();
int[] arr = new int[num];
int i=0;
while (sc.hasNext()){
arr[i++] = sc.nextInt();
}
fun(arr,key,num);
}
}
京公网安备 11010502036488号