为什么java总是爆内存
查看原帖
为什么java总是爆内存
644576
hhubigben楼主2022/1/21 00:02
import java.math.BigInteger;
import java.util.*;

public class Main {
    static int n,m;

    static BigInteger[] a=new BigInteger[1000010];
    static boolean cheak(int x){
        BigInteger ans =new BigInteger("0");
        ans=a[1];int num=1;
        for (int i=2;i<=n;i++ ){
            if (a[i].subtract(ans).compareTo(new BigInteger(Integer.toString(x)))>=0) {
                num++;ans=a[i];
            }
            if (num>=m) break;
        }
        if (num>=m) return true;
        else return false;
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        n=in.nextInt(); m=in.nextInt();
        for (int i=1;i<=n;i++) a[i]=new BigInteger(Integer.toString(in.nextInt()));
        Arrays.sort(a,1,1+n);
        int l=1,r=(int)1e9;
        int ans=0;
        while (l<=r){
            int mid=l+(r-l)/2;
            if (cheak(mid)) {
                ans=mid; l=mid+1;
            }
            else r=mid-1;
        }
        System.out.print(ans);
    }

}

答案是对的但是内存爆了






2022/1/21 00:02
加载中...