求求好哥哥看看哪里有问题,只能过一个点,实在找不出错误了
查看原帖
求求好哥哥看看哪里有问题,只能过一个点,实在找不出错误了
150750
sakura、楼主2022/4/1 21:25

以下为代码,实在找不到哪里有错,测试样例又下载不了

import java.util.Arrays;
import java.util.Scanner;
public class Main {
	static int m, n, sum;
	static int[] school = new int[100000];
	static int[] score = new int[100000];
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		m = sc.nextInt();
		n = sc.nextInt();
		for (int i = 0; i < m; i++) {
			school[i] = sc.nextInt();
		}
		Arrays.sort(school, 0, m);
		
		for (int i = 0; i < n; i++) {
			score[i] = sc.nextInt();
			sum += find(score[i]);
		}
		System.out.println(sum);
	}
	static int find(int num) {
		int l = 0, r = n - 1;
		int min = Integer.MAX_VALUE;
		while (l <= r) {
			int mid = (l + r) / 2;
			if (school[mid] == num) {
				return 0;
			}//当前值正好等于num,直接返回0
			else if (school[mid] > num) {
				min = Math.min(min, Math.abs(school[mid] - num));
				r = mid - 1;
			}//收缩边界同时获得最小值
			else if(school[mid] < num) {
				min = Math.min(min, Math.abs(school[mid] - num));
				l = mid + 1;
			}
		}
		
		return min;//返回最小值
	}
}
2022/4/1 21:25
加载中...