我有一份功课。作业就像那样
数字X,数组A和数组B,数据类型为int。我应该找到最接近X的A [I] + B [J](0 <= I <= A.length,0 <= J <= B.length)。
首先,我试图通过测试All I&amp; J来找到答案。但是有时间限制和内存限制。所以我做了一个假设,不需要大于X的数字。但是,我再次遇到超时问题。我该如何节省时间?
我的代码就是这个。
import java.util.Scanner;
import java.lang.Math;
public class PRO_D{
public static void main(String[] args)
{
Scanner kb=new Scanner(System.in);
int aLen=kb.nextInt();
int bLen=kb.nextInt();
long number=kb.nextLong();
long distance=100;
long dist=100;
int aCnt=0, bCnt=0;
long temp;
kb.nextLine();
long[] arrA=new long[aLen];
long[] arrB=new long[bLen];
for(int i=0; i<aLen; i++)
{
temp = kb.nextLong();
if (temp <= number)
{
if(number-temp<distance)
{
distance=number-temp;
}
arrA[i] = temp;
aCnt++;
}
else if(number-temp<distance)
{
arrA[i]=temp;
aCnt++;
}
}
for(int i=0; i<bLen; i++)
{
temp = kb.nextLong();
if (temp <= number)
{
if(number-temp<distance)
{
distance=number-temp;
}
arrB[i] = temp;
bCnt++;
}
else if(number-temp<distance)
{
arrB[i]=temp;
bCnt++;
}
}
for(int i=0; i<aCnt; i++)
for(int j=0; j<bCnt; j++)
{
temp=Math.abs(number-arrA[i]-arrB[j]);
if(dist>temp)
dist=temp;
}
System.out.println(dist);
}