请问为什么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。 –