原始问题:
Java代码实现:小美数组重排问题求解
以下是Java代码实现:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int q = scanner.nextInt();
for (int i = 0; i < q; i++) {
int n = scanner.nextInt();
int m = scanner.nextInt();
int[] a = new int[n];
int[] b = new int[n];
for (int j = 0; j < n; j++) {
a[j] = scanner.nextInt();
}
for (int j = 0; j < n; j++) {
b[j] = scanner.nextInt();
}
String result = canReorder(a, b, m) ? "YES" : "NO";
System.out.println(result);
}
}
private static boolean canReorder(int[] a, int[] b, int m) {
Arrays.sort(a);
Arrays.sort(b);
for (int i = 0; i < a.length; i++) {
if (a[i] + b[a.length - 1 - i] > m) {
return false;
}
}
return true;
}
}这段代码首先读取询问次数q,然后对于每个询问,读取n和m,以及数组a和b的元素。接下来,调用canReorder方法判断是否能通过重排满足条件。canReorder方法首先对数组a和b进行排序,然后逐个比较a和b的元素之和是否小于等于m,如果有任意一对元素之和大于m,则返回false,否则返回true。
最后,根据返回的结果输出"YES"或"NO"。
Prev:### 文艺风 《小美探寻数组重排之奥秘:能否满足特定条件?》