【发布时间】:2017-08-28 08:52:10
【问题描述】:
我得到了一个双精度数组,所有数字都相等,除了一个。我的任务是找到那个唯一的号码。我的代码返回了正确的输出,现在我想知道如何进一步优化它。
这是我的代码:
public static double findUnique(double array[]) {
double unique = 0;
double common = 0;
for(int i=0; i<array.length; i++) {
for(int j=i+1; j<array.length; j++) {
if(array[i]==array[j]) {
common = array[i];
}
}
if(common!=array[i]) {
unique = array[i];
}
}
return unique;
}
我唯一能想到的就是先存储数组的长度,但经过一些测试后,它实际上需要更长的时间。谢谢。
【问题讨论】:
-
好的,现在我因为不测试这个而感到愚蠢。我在
if语句中使用了break,它大大减少了所需的时间。不过,我仍然愿意接受答案。 -
真的很简单。看看
array[0]、array[1]、array[2]。如果其中任何一个与其他不同,则返回唯一的。如果都相同,则在array[3...N-1]中搜索不 等于array[0]的一个元素。 -
@IwillnotexistIdonotexist 谢谢你的建议,我会在此基础上做一个新的方法。