美团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);
}
}