我正在一个职业网站中练习自动判断算法,我有以下问题。
在其中一个谜题中,问题是找到 2 个排序数组的中位数,要实现的方法的签名是:
public double findMedianSortedArrays(int A[], int B[])
我编写了代码,但一些测试失败了。
查看结果,报告的失败如下:
Input Output Expected
[], [1] 1.0 1
[2], [] 2.0 2
看来我的基础知识还很生疏。
我的问题:如果该方法返回一个 1
或 2
并拒绝 1.0
,它怎么会期望
双
?
我关于合并计算的代码片段是:
if(array.length %2 == 0){
return (array[middle] + array[middle - 1])/(double)2;
}
else{
return (double)array[middle];
}
最佳答案
这是法官的错误。如果我去the site ,选择“Java”并填写以下Java实现(只需填写一行,return 0;
:
public class Solution {
public double findMedianSortedArrays(int A[], int B[]) {
// Start typing your Java solution below
// DO NOT write main() function
return 0;
}
}
报告指出所有情况下的输出:0.0
。
C++ 等效项似乎没有遇到同样的问题。如果我填写这个:
class Solution {
public:
double findMedianSortedArrays(int A[], int m, int B[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
return 0;
}
};
然后报告指出所有情况下的输出:0
。
关于Java 对 double 、整数和转换基础知识的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9473449/