当前位置: 首页 > 知识库问答 >
问题:

结果类型无效,PHP需要int

左丘楷
2023-03-14

你能告诉我下一个错误是什么吗?

正在运行解决方案。。。编译成功。

示例测试:[-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]=

就像他们在任务中要求我一样,但是Codibility向我展示了所有这些错误。

演示任务如下:

这是一个演示任务。

给出了一个由N个整数组成的零索引数组。这个数组的平衡指数是任意整数P,0≤ P

例如,考虑下面的数组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也是一个均衡指数,因为:

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..100000]范围内的整数;数组A的每个元素都是范围内的整数[−2,147,483,648..2,147,483,647]. 复杂性:

预期最坏情况时间复杂度为O(N);预计最坏情况下的空间复杂度为O(N),超出了输入存储空间(不计算输入参数所需的存储空间)。可以修改输入数组的元素。

非常感谢。

共有2个答案

巢睿
2023-03-14

磁带平衡问题的措辞非常混乱。

“0”部分

我的意见是这个解释措词不当。然而,这个例子很清楚,所以如果你能看完开头的文字,解决方案就相对简单了。

给出了一个由N个整数组成的非空数组。数组A表示磁带上的数字。任意整数P,使得0

这两部分之间的差异是:|(A[0]A[1]…A[P]的值− 1]) − (A[P]A[P 1]…A[N]− 1])|

换句话说,它是第一部分和第二部分之和之间的绝对差。

一开始让我感到困惑的是,我为错误的数组输入返回NULL,并收到一个编码错误,当它需要一个INT时返回NULL。我想,当没有解决坏数据的方法时,我怎么能返回INT呢?结果,他们希望你返回一个零。

这是我的100/100 PHP解决方案:

function solution($A) {
    if ( empty($A) ) {
        return 0;
    }
    
    $count = count($A);
    
    if ($count == 1) {
        return $A[0];
    }
    
    for ($i=0, $max_position = $count - 1; $i<$max_position; $i++) {
        if (!is_int($A[$i])) {
            return;
        }

        if ($i == 0) {
            $left = $A[0];
            $right = array_sum($A) - $left;
        
            $min = abs($left - $right);
        }
        else {
            $left += $A[$i];
            $right -= $A[$i];

            $min = min([$min, abs($left - $right)]);   
        }
    }

    return $min;
}

需要注意的三件事。

  1. 如果$A为空,则返回一个整数(0),因为NULL会导致编码错误
云浩然
2023-03-14

对于代码错误,请检查这篇文章:https://stackoverflow.com/a/19804284/4369087

试试这个,它更可读,在这个解决方案中,我通过引入两个函数使代码更可读sumRight()sumLeft(),其中我使用内置的php函数。

array_sum():计算数组中的值之和:它以整数或浮点形式返回值之和;如果数组为空,则为0。

array_slice():提取数组的切片:array_slice()返回由偏移量和长度参数指定的数组元素序列。

因此,每次我们在数组上循环时,我们计算从给定位置$i算出数组的右侧和左侧切片的总和:

<?php

function solution(array $a)
{
    $result = [];

    $count = count($a);
    for($i = 0; $i < $count; $i++) {
        if(sumLeft($a, $i-1) === sumRight($a, $i+1)) {
            $result[] = $i;
        }
    }

    return  count($result) ? $result : -1;
}

function sumRight(array $a, float $position): float
{
    return array_sum(array_slice($a, $position));;
}

function sumLeft(array $a, float $position): float
{
    return array_sum(array_slice($a, 0, $position + 1));
}

echo "<pre>";
print_r(solution([-1, 3, -4, 5, 1, -6, 2, 1]));

输出:

Array
(
    [0] => 1
    [1] => 3
    [2] => 7
)
 类似资料:
  • 我读到在大多数情况下不需要为udf指定返回类型,但如果您添加语句,那么它是必要的。 我有以下udf,它在内部迭代一个列表,我希望在匹配的情况下udf立即返回。基于我在这里找到的其他答案,我尝试了以下两种方法来定义返回类型: 上面的脚本只是返回一个错误 上面的剧本一直在说: 错误:方法删除别名有返回语句;需要结果类型 指定返回类型的正确方法是什么?

  • 主要内容:分发结果类型:,FreeMaker结果类型:,重定向结果类型:正如前面提到的,<results>标签在Struts2的MVC框架的视图中所扮演的角色。动作是负责执行业务逻辑。执行业务逻辑后,接下来的步骤是使用<results>标签显示的视图。  经常有一些附带导航规则的结果。例如,如果在操作方法是对用户进行验证,有三种可能的结果。 (一)成功登录;(二)不成功的登录,用户名或密码错误;(三)帐户锁定。 在这种情况下的动作方法将被配置呈现的结果有三种可能的结果

  • 问题内容: 我们现在正在学习如何使用多个类,并且有一个项目要求创建一个包含a 和a的类,然后从主类中引用它以找到直径。此代码继续收到错误(标题中提到) 感谢您的帮助,-AJ 更新1 :好的,但是我不必将第三行声明为double,对吗?在我正在学习的书中,该示例没有做到这一点。 如您所见,该代码与我在我的代码中有什么不同?无论出于什么原因,本书的代码中都没有错误,但是我的说法是那里有错误。 问题答案

  • 我已经研究了Stackoverflow中的许多问题,如果不是所有问题的话,但我找不到答案。 我有一个问题与贝宝IPN。我正在用sanbox和IPN模拟器测试它。我还使用PHP和cURL来验证来自贝宝的响应。但我得到的只是无效的回应结果。我似乎无法得到证实。 我认为问题是,我没有发回确切的网址到贝宝。您可以看到下面的IPN监听器代码:

  • 如前所述, 《results》标签在Struts2 MVC框架中扮演view的角色。 该操作负责执行业务逻辑。 执行业务逻辑后的下一步是使用《results》标记显示视图。 通常会在结果中附加一些导航规则。 例如,如果操作方法是对用户进行身份验证,则有三种可能的结果。 成功登录 登录失败 - 用户名或密码不正确 帐户被锁定 在这种情况下,操作方法将配置三个可能的结果字符串和三个不同的视图来呈现结果

  • 问题内容: 我是Go编程语言的新手,我有一个创建和解释器的任务,但是我遇到了以下问题: 我想将环境定义为: 但是我收到错误“无效的递归类型环境”。根据我的研究,我将父级更改为 Environment。但是现在,当我需要创建一个环境类型为var的新环境时,它会收到错误消息“无法将fun_Val.ds(环境类型)用作 环境值类型”。我正在如下创建环境: 我试图将这篇文章中的代码量限制在一定范围内,但是