2014-12-30 36 views
0

我刚刚完成了一项可信性测试,仅获得了81%的分数。当一个'大排列'对它进行测试时,我的代码失败了。不适用于大排列的代码

我不知道为什么这会失败,因为spec说所有的值都是整数,我的for循环只使用int值。我真的很感激,如果有人可以看看我的代码,并告诉我,为什么它提供了大量的排列值-1: -

https://codility.com/demo/results/demo4G8CJS-9YN/

class Solution { 
    public int solution(int X, int[] A) { 
     // write your code in Java SE 8 

       int target = X; 
     int[] path = new int[X]; 


     for(int i = 0; i < A.length-1; i++) { 
      if(A[i] != path[A[i]-1]) { 
      path[(A[i]-1)] = A[i]; 
      target--; 
      } 

      if(target==0) { 
       return i; 
      } 

     } 
      return -1; 
    } 
} 
+0

“大”是否大于2^31? – SLaks

+0

尝试把int计数器=(A.length -1),cuz每次发生这个循环时,这个数字再次计算 – vlatkozelka

+1

这个问题似乎是题外话题,因为它是关于审查代码。也许http://codereview.stackexchange.com/会是一个更好的地方。 – Chris

回答

2

它应该是(INT I = 0; (长度为1),长度为1,长度为1)。截至目前,数组的最后一个元素被忽略。它实际上没有通过一个非常简单的测试:一个元素和X = 1的数组。

+1

这个答案应该是正确的。链接的Codility测试结果甚至显示,测试“单一/单个元素”失败。 – MPirious

+0

啊,好的完美,非常感谢! –

相关问题