猿问

Leetcode的第一道题目,用PHP编写出现错误

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

我写的php代码如下:

<?php

    $num = [11, 7, 15, 2];
    $target = 9;

    $arr = array();
    $result = array();

    for($i=0; $i<count($num);$i++){
        $link = $target - $num[$i];
        if($arr[$link]){
             $result = [$arr[$link], $i];
        }
        $arr[$num[$i]] = $i;
    }

    print_r($result);


?>

就我在本地编译器以及结果来说运行是正确的,可是这个思想用在Leetcode编译就报错了,不知道为什么。

还有这代码有没有需要修改的地方?


我是北方栖姬
浏览 994回答 1
1回答

pardon110

看了一下,它们官方要求答复的模板是这样,即是要有数组类型的返回值的。而你所写的代码是完全面向过程,且假定了给定的输入数组是一个有序不重复。所以提交的代码,有两个可能的错误:1.不符合官方的规范 2.所提交的代码并没有完全覆盖其官方测试用例库class Solution {     /**      * @param Integer[] $nums      * @param Integer $target      * @return Integer[]      */     function twoSum($nums, $target) {          $length = count($nums);          for ($i = 0; $i < $length; $i++) {              $key = array_search($target - $nums[$i], array_slice($nums, $i + 1));              if ($key > -1) {                  return [$i, ($key + $i + 1)];              }          }        return [];      } }
随时随地看视频慕课网APP
我要回答