Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 找到A,B使得A+B=M?_Java_Arrays_Sorting_Merge - Fatal编程技术网

Java 找到A,B使得A+B=M?

Java 找到A,B使得A+B=M?,java,arrays,sorting,merge,Java,Arrays,Sorting,Merge,我已经生成了两个随机整数数组,X和Y,长度都是n,我的目标是在X中找到整数a,在Y中找到整数b,这样a+b=m,其中m由用户给出。这不是一个很难解决的问题,除了我的时间限制是显式地在*logn上,也就是说,不是在^2上,也不是在On上 我意识到合并排序和快速排序以及其他排序都具有这种时间复杂性,但我不知道如何在这种特定情况下实现它们,因为涉及到多个数组 其他可能有用的信息:n不是很大,可能小于50。数组中的值都是从1到100随机化的,并且没有预先排序,尽管我可以根据需要对它们进行排序。到目前为止

我已经生成了两个随机整数数组,X和Y,长度都是n,我的目标是在X中找到整数a,在Y中找到整数b,这样a+b=m,其中m由用户给出。这不是一个很难解决的问题,除了我的时间限制是显式地在*logn上,也就是说,不是在^2上,也不是在On上

我意识到合并排序和快速排序以及其他排序都具有这种时间复杂性,但我不知道如何在这种特定情况下实现它们,因为涉及到多个数组


其他可能有用的信息:n不是很大,可能小于50。数组中的值都是从1到100随机化的,并且没有预先排序,尽管我可以根据需要对它们进行排序。

到目前为止你尝试过什么吗?老实说,没有,我没有,因为我的想法都涉及到用蛮力检查一个数组中的每个数字和另一个数组中的每个数字,据我所知,这不遵循On*logn模式。如果数字在1到100之间,您可以使用基于计数的排序,该排序为On,并且更易于编程。由于二进制搜索是Olog n,因此这仍然会导致日志n的总体复杂性。@StarCruz First,sort one数组。然后迭代另一个,第二个中的所需值是所迭代的第一个值和所需数字m之间的差值。也就是说,对m-iterator进行二进制搜索。下一个在第二个数组中。首先对数组Y进行排序。然后对X进行迭代。对于X中的每个值a,使用二进制搜索查看m-a是否在Y中。这在日志n上具有复杂性。您可以使用HashSet按时完成,但这显然是不允许的。