請問爲什麼Codility告訴我下一個錯誤?Codility無效的結果類型,int期望值爲PHP
運行解決方案...編譯成功。
示例測試:[-1,3,-4,5,1,-6,2,1]輸出(stderr):無效 結果類型,int expected。運行時錯誤(測試程序意外終止 )
檢測到一些錯誤。
我的解決方案是在PHP上編寫的。
function solution($A) {
$N = count($A);
$Ps = array();
foreach ($A as $KeyP => $P) {
$sum = 0;
if ($KeyP == 0) {
for ($x = 1; $x < $N; $x++) {
$sum += $A[$x];
}
if ($sum == $P) {
$Ps[] = $KeyP;
}
}
else {
if (($KeyP+1) == $N) {
for ($z = 0; $z < $KeyP; $z++) :
$sum += $A[$z];
endfor;
if (($sum >= 0) AND ($sum < $N)) {
$Ps[] = $KeyP;
}
}
else {
$sum1 = 0;
$sum2 = 0;
for ($z = 0; $z < $KeyP; $z++) :
$sum1 += $A[$z];
endfor;
for ($y = ($KeyP+1); $y <= ($N-1); $y++) :
$sum2 += $A[$y];
endfor;
if ($sum1 == $sum2) {
if ($sum1 < $N) {
$Ps[] = $KeyP;
}
}
}
}
}
return (count($Ps) <= 0) ? -1: $Ps;
}
給出的下一個陣列我的函數的輸出一直:
array(-1, 3, -4, 5, 1, -6, 2, 1);
輸出繼電器
陣列([0] => 1 [1] => 3 [2] => 7)
這就像他們要求我的任務,但Codility顯示我所有這些錯誤。
演示任務是下面:
這是一個演示任務。
給出了一個由N個整數組成的零索引數組A.該陣列的平衡指數是任何整數P,使得0≤P< N 並且較低指數的元素之和等於較高指數的元素之和,即A [0] + A [1] + ... + A [P-1] = A [P + 1] + ... + A [N-2] + A [N-1]。假設零元素和等於0.如果P = 0或者P = N-1,則可能發生這種情況。
例如,考慮下面的數組A選自N = 8 元素:
A[0] => -1 A[1] => 3 A[2] => -4 A[3] => 5 A[4] => 1 A[5] => -6 A[6] => 2 A[7] => 1
P = 1是此數組的平衡指數,這是因爲:
A [0] = - 1 = A [2] + A [3] + A [4] + A [5] + A [6] + A [7] P = 3是該陣列的 平衡指數,因爲:
A [0] + A [1] + A [2] = -2 = A [4] + A [5] + A [6] + A [7] P = 7也是dex,因爲:
A [0] + A [1] + A [2] + A [3] + A [4] + A [5] + A [6] = 0並且沒有 元素指數大於7.
P = 8不是均衡指數,因爲它不符合 條件0≤P < N.
寫功能:
功能溶液($ A);
給定零指數陣列A由N個整數組成,返回其任何均衡指數 。如果不存在 均衡指數,函數應該返回-1。
例如,給定上面所示的陣列A,該功能可以返回1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0或7,如上所述。
假設:
N是範圍[0..100,000]內的整數;陣列A 的每個元素是範圍[-2,147,483,648..2,147,483,647]內的整數。 複雜度:
預期的最壞情況下的時間複雜度是O(N);預期的最壞情況空間 複雜度爲O(N),超出輸入存儲空間(不包括輸入參數所需的存儲空間 )。輸入數組的元素可以是 已修改。
謝謝。
感謝答案,但是你的代碼比我的代碼更容易閱讀並不意味着Codility會批准它。實際上,解決方案和輸出是相同的,所以,兩個代碼都會給出相同的錯誤。 :(Greetings。 –
不客氣@FernandoUrban,哪個php版本給出錯誤? – yoeunes
Codility希望PHP7。 –