给定一个整数数组 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 []; } }
- 1 回答
- 0 关注
- 992 浏览
添加回答
举报
0/150
提交
取消