Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 求解余度算法_Java_Algorithm - Fatal编程技术网

Java 求解余度算法

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

我在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+= 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>
因此,我怀疑链接页面是否显示您发布的代码的结果。

两个相邻节点有一条边,其权重为1int[] T = {1, 2, 3, 4, 5, 6, 7, 8, 9, 9};