当时提交的代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str = sc.nextLine();
String[] arr = str.split(" ");
int k = sc.nextInt();
int x = 0;
int d = 0;
for(int i = 0; i < arr.length; i++){
int n = Integer.parseInt(arr[i]);
if(n < k){
x++;
}
if (n >= k) {
d++;
}
}
if(x == arr.length || d == arr.length){
System.out.println(0);
}else if(x > 0){
System.out.println(1); //这个就乱写了
}
}
}
}
我的思路是构建一个满足条件结果个数长度的队列,将数组通过这个队列遍历一遍,记录这个队列里不满足条件的最小个数,这就是最少需要交换的次数了,代码实现的话有很多可以优化的点,你可以自己试一试