小美的数组重排(美团2024届秋招笔试第三场编程真题)

核心思想
贪心的选择 a最大 + b最小
想想如果 a最大的加上b最小的 都能越出边界,那岂不是就没有数字能够让结果在区间内了。
题目说重排a,既然a的位置没要求(随便挪),反过来b也是随便挪的。
代码
import java.util.*;
public class Main {
public static void main(String[] args) {
final long MOD = (long) (1e9 + 7);
Scanner scanner = new Scanner(System.in);
int q = scanner.nextInt();
while(q-- > 0){
int n = scanner.nextInt();
int m = scanner.nextInt();
Integer[] a = new Integer[n];
Integer[] b = new Integer[n];
for(int i = 0; i < n; i++){
a[i] = scanner.nextInt();
}
for(int i = 0; i < n; i++){
b[i] = scanner.nextInt();
}
Arrays.sort(a, (o1, o2) -> o2 - o1);
Arrays.sort(b);
boolean flag = true;
for(int i = 0; i < n; i++){
if(a[i] + b[i] < 1 || a[i] + b[i] > m){
flag = false;
break;
}
}
System.out.println(flag? "Yes": "No");
}
}
}

浙公网安备 33010602011771号