讨论/求职面试/招商银行FinTech训练营研发赛道编程题第一题题解/
招商银行FinTech训练营研发赛道编程题第一题题解
/**
 * @author BuggerKing
 * @date 2021/4/29
 */
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        int n=sc.nextInt();
        int[] stu=new int[n];
        int[] car=new int[n];
        for(int i=0;i<n;i++){
            stu[i]=sc.nextInt();
        }
        for(int i=0;i<n;i++){
            car[i]=sc.nextInt();
        }
        Arrays.sort(stu);
        Arrays.sort(car);
        long ans=1;
        int cnt=0;
        for(int i=n-1;i>=0;i--){
            int m=right_bound(car,stu[i]);
            ans=ans*(n-m-cnt)%100000007;
            cnt++;
        }
        System.out.println(ans);
    }
    public static int right_bound(int[] nums, int target) {
        if (nums.length == 0){
            return -1;
        }
        int left = 0;
        int right = nums.length;

        while (left < right) {
            int mid = (left + right) / 2;
            if (nums[mid]>=target) {
                right = mid;
            }else{
                left = mid + 1;
            }
        }
        return left;
    }
}

共 4 个回复

这里其实不需要二分查找right_bound, 线性地从后往前找就行

九点半面试完,结束就剩半个小时了就A了一道哈哈重在参与

第一题通过了93%,边界情况死活没处理过去,直接气死

老哥A了几道