2015-06-10 67 views
-3
class Solution { 


public int solution(int[] A) { 
    long totalSum = 0; 

    for(int i = 1; i< A.length; i++) 
    { 
     totalSum += A[i]; // same as sumright ok till now 
    } 
    long mindiff = 0; 
    long tempdiff = 0; 
    long part1 = 0, part2; 
    part1 += A[0]; 
    part2 = totalSum ; 
    mindiff = Math.abs(part1 - part2); 
    /*System.out.println("part1 is"+part1); 
    System.out.println("part2 is"+part2);  
    System.out.println(mindiff); 
    */for(int i = 1; i< A.length; i++) 
    { 
     //System.out.println("loopindex is "+i); 
     part1 += A[i]; 
     part2 -= A[i]; 
     tempdiff = Math.abs(part1 - part2); 
     /*System.out.println("part1 is"+part1); 
     System.out.println("part2 is"+part2);  
     System.out.println("tempdiff is"+ tempdiff); 
     */ 
     if(tempdiff < mindiff) 
     { 
      mindiff = tempdiff; 
     } 
     //System.out.println(mindiff); 
    } 

    return (int)mindiff; 

} 
} 

請檢查該鏈接如何提高我的解碼測試的解決方案?

https://codility.com/demo/results/demoD28TY3-RD4/

有什麼辦法,我們可以得到它被用於確認一個codility測試的測試輸入?

我答錯了兩種情況下

- 小元素 - 兩個元素

請指教。

+0

爲什麼downvotes,這是一個相當不錯的問題 –

+2

@AdriaanKoster不,它不是。它沒有真正的價值是Codility演示測試,更不用說OP可以做的最好的事情是自己弄清楚。 – Kayaman

+1

我投票結束這個問題作爲題外話,因爲讓SO用戶做其他人的Codility演示練習是沒有用的。 – Kayaman

回答

1

問題是你正在分裂後的最後一個元素,導致一個空的一半。

你的第二個迭代更改爲:

for(int i = 1; i< A.length - 1; i++) 

而且不要忘記考慮應該發生什麼,如果A爲空或長度爲1

編輯固定的版本應該會很快出現在這裏:https://codility.com/demo/results/demoZFZ6ED-2CP/