美团8.29笔试第二题有问题吧

说的是一定保证可以放入,但是最后一个数据第一个宽度数组有数据大于 第二个数组的最大值了都,无语了,调了好久,特判下过了
package xiao;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author fancy
 * @date 2021/8/29 11:11
 */
public class Test2 {
    static int n;
    static int a[] = new int[100010];
    static int b[] = new int[100010];
    static int mod = (int) (1e9+7);
    static long ans = 1;
    public static void main(String[] args) throws IOException {
        StreamTokenizer re = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        re.nextToken();
        n = (int)re.nval;
        for(int i = 1;i <= n;i++){
            re.nextToken();
            a[i] = (int) re.nval;
        }
        for(int i = 1;i <= n;i++){
            re.nextToken();
            b[i] = (int) re.nval;
        }
        Arrays.sort(a,1,n+1);
        Arrays.sort(b,1,n+1);
        int index = 1;
        for(int i = 1;i <= n;i++) {
            if(a[i] <= b[index]) a[i] = n-index+1;
            else {
                        // a[i] > b[index] 的时候让index++    可是这个index居然会大于n ?? 离谱
                index++;
                i--;
            }
            if(index == n) { // 特判下就过了
                i++;
                for(int j = i;j <= n;j++) a[j] = 1;
                break;
            }
        }
        int cnt = 0;
        for(int i = n;i >= 1;i--) {
            ans = (ans * (a[i] - cnt)) % mod;
            cnt++;
        }
        System.out.println(ans);
    }
}     


#美团笔试##美团##笔经#
全部评论

相关推荐

12-02 17:22
已编辑
西安交通大学 Java
华为 昇腾 ai软件开发 薪资20k x (14-16),职级13A,5%公积金,c/cpp
BLOOMING7:闭眼滴滴,华子给的又少又累
点赞 评论 收藏
分享
球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
10-11 17:30
湖南大学 C++
我已成为0offer的糕手:羡慕
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务