为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
我是北方栖姬 2019-02-22 23:21:31
给定一个整数数组 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编译就报错了,不知道为什么。还有这代码有没有需要修改的地方?
查看完整描述

1 回答

已采纳
?
pardon110

TA贡献1038条经验 获得超227个赞

看了一下,它们官方要求答复的模板是这样,即是要有数组类型的返回值的。而你所写的代码是完全面向过程,且假定了给定的输入数组是一个有序不重复。所以提交的代码,有两个可能的错误: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 []; 
    }
}


查看完整回答
反对 回复 2019-02-23
  • 1 回答
  • 0 关注
  • 992 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信