小美的数组重排(美团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");
        }
    }
}
posted @ 2024-04-02 10:46  Shie1d  阅读(50)  评论(0)    收藏  举报