Java 求解余度算法
我在Codibility网站上尝试了示例演示,并发布了我的解决方案,但我有一个简单的错误,但无法确定它 这里描述了问题,只描述了问题,请不要在意那里的分析,因为那不是我的解决方案 我的解决方案是:Java 求解余度算法,java,algorithm,Java,Algorithm,我在Codibility网站上尝试了示例演示,并发布了我的解决方案,但我有一个简单的错误,但无法确定它 这里描述了问题,只描述了问题,请不要在意那里的分析,因为那不是我的解决方案 我的解决方案是: public static int min_router_peripherality ( int[] T ) { // write your code here int sum=0; for(int i=0;i<T.length;i++) sum
public static int min_router_peripherality ( int[] T ) {
// write your code here
int sum=0;
for(int i=0;i<T.length;i++) sum+= T[i];
int min = sum;
int index = 0;
int array [] = new int [T.length];
for(int i=0;i<T.length;i++) {
min = sum -T[i];
array[i] = min;
}
int x = array[0];
for (int i=0; i<array.length;i++)
{
if (array[i]<x)
{
x = array[i];
index = i;
}
}
return index;
}
当查看结果时,我会说您的程序是正确的,但是太慢了,无法成功完成所有测试用例。所以你需要想出更好的算法 编辑:正如Ivan Benko Ivan Benko指出的,您的解决方案已启用,因此我查看了您的代码,并得出了以下输入:
{ 4, 9, 4, 9, 4, 4, 8, 9, 0, 0 }
虽然它不是示例输入,但它描述的网络与任务描述中的网络相同。所以输出应该是相同的,但您的解决方案给出了不同的答案。我所做的只是查看您的代码,我注意到的第一件事是,看起来您根本不需要那个数组,或者第三个for循环。第二个for循环可以跟踪它生成的最低min值,以及与该最低min值关联的索引,而不是像现在这样存储所有值并进行第二次运行 编辑:
和其他人一样,我认为你的链接是与你自己的结果相关的。我不打算发布答案,因为我认为你应该自己想出答案。然而,在我看来,你似乎对他们说的找到所有其他节点的距离之和感到困惑,这可能就是为什么你要开始对整个数组求和的原因。它们传递到函数中的数组无论如何都不是一组距离。这是现有连接的列表。如果数组中0索引处的第一个元素是5,则表示路由器0与路由器5有连接。因此,在我看来,你的做法完全错了。我认为错误如下:
for(int i=0;i<T.length;i++)
sum+= T[i];
结果是8。但在一条直线上,结果应该在中间某个地方。< /P>
因此,我怀疑链接页面是否显示您发布的代码的结果。两个相邻节点有一条边,其权重为1我删除了明显不正确的C++标签。你的解决方案的时间共犯在继续,但是你有超时错误。您确定要提交此解决方案吗?您是正确的。我已经编辑了这个问题。我刚刚发布了问题描述链接,但人们认为分析与上述代码有关。上述链接中提到的结果与上述代码无关。我只想提及仅使用该链接的算法问题。
int[] T = {1, 2, 3, 4, 5, 6, 7, 8, 9, 9};