今日头条第四题(java实现)

/*
第一行为两个整数n,m 
第二行n个整数,表示集合a中的元素 
第三行m个整数,表示集合b中的元素 
对于100%的数据,1<n,m<1000000<a[i],b[i]<100000000,集合a中元素互不相同,集合b中的元素互不相同。
in:
3 5
1 2 5
2 3 4 5 6
out:
2
*/
import java.util.Arrays;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class Main {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        int n,m;
        int cnt;
        n=scan.nextInt();
        m=scan.nextInt();
        double []a=new double[n];
        double []b=new double[m];
        for(int i=0;i<n;++i) {
            a[i]=scan.nextDouble();
        }
        for(int i=0;i<m;++i) {
            b[i]=scan.nextInt();
        }
        Arrays.sort(a);
        Arrays.sort(b);
        double va=avd(a);
        double vb=avd(b);
        if(vb>va) {
            cnt=Maicg(a,b,va,vb);
        }
        else {
            cnt=Maicg(b,a,vb,va);
        }
        System.out.println(cnt);
    }
    static double avd(double []a) {
        double sum=0;
        for(int i=0;i<a.length;++i) {
            sum+=a[i];
        }
        return sum/a.length;
    }
    static int Maicg(double[]a,double[]b,double va,double vb) {
        int cnt=0;
        Set se=new TreeSet();
        for(int i=0;i<a.length;++i) {
            se.add(a[i]);
        }
        int n,m;
        n=a.length;
        m=b.length;
        for(int i=0;i<b.length-1&&b[i]<vb;i++) {
            if(b[i]>va) {
                int j=se.size();
                se.add(b[i]);
                if(j!=se.size()) {
                    va=(va*n+b[i])/(n+1);
                    vb=(vb*m-b[i])/(m-1);
                    cnt++;
                }
            }
        }
        return cnt;
    }
}
#字节跳动##笔试题目#
全部评论
m,n没变啊
点赞 回复 分享
发布于 2018-03-26 12:16

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务