給定一個整數(shù)數(shù)組?nums?和一個目標(biāo)值?target,請你在該數(shù)組中找出和為目標(biāo)值的那?兩個?整數(shù),并返回他們的數(shù)組下標(biāo)。你可以假設(shè)每種輸入只會對應(yīng)一個答案。但是,你不能重復(fù)利用這個數(shù)組中同樣的元素。示例:給定?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);
?>就我在本地編譯器以及結(jié)果來說運行是正確的,可是這個思想用在Leetcode編譯就報錯了,不知道為什么。還有這代碼有沒有需要修改的地方?
1 回答
已采納

pardon110
TA貢獻1038條經(jīng)驗 獲得超227個贊
看了一下,它們官方要求答復(fù)的模板是這樣,即是要有數(shù)組類型的返回值的。而你所寫的代碼是完全面向過程,且假定了給定的輸入數(shù)組是一個有序不重復(fù)。所以提交的代碼,有兩個可能的錯誤:1.不符合官方的規(guī)范 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 關(guān)注
- 1036 瀏覽
添加回答
舉報
0/150
提交
取消