【发布时间】:2017-08-07 01:51:41
【问题描述】:
你能告诉我为什么 Codility 告诉我下一个错误吗?
正在运行解决方案...编译成功。
示例测试:[-1, 3, -4, 5, 1, -6, 2, 1] 输出(stderr):无效 结果类型,预期为 int。 RUNTIME ERROR(被测程序终止 没想到)
检测到一些错误。
我的解决方案是用 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 = 8 组成的数组 A 元素:
A[0] => -1 A[1] => 3 A[2] => -4 A[3] => 5 A[4] => 1 A[5] => -6 A[6] => 2 A[7] => 1P = 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 也是 均衡指数,因为:
A[0] + A[1] + A[2] + A[3] + A[4] + A[5] + A[6] = 0 并且没有 索引大于 7 的元素。
P = 8 不是均衡指数,因为它不满足 条件 0 ≤ P
写一个函数:
函数解($A);
给定一个由 N 个整数组成的零索引数组 A,返回 它的任何均衡指数。如果没有,该函数应返回 -1 存在均衡指数。
例如,给定上面显示的数组 A,函数可能返回 1, 3 或 7,如上所述。
假设:
N 是 [0..100,000] 范围内的整数;数组 A 的每个元素 是 [−2,147,483,648..2,147,483,647] 范围内的整数。 复杂性:
预期的最坏情况时间复杂度为 O(N);预期最坏情况空间 复杂度为 O(N),超出输入存储(不计算存储 需要输入参数)。输入数组的元素可以是 修改。
谢谢。
【问题讨论】: