2014-12-30 100 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

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

相關問題