在一個(gè)長(zhǎng)度為n的數(shù)組里的所有數(shù)字都在0到n-1的范圍內(nèi)。 數(shù)組中某些數(shù)字是重復(fù)的,但不知道有幾個(gè)數(shù)字是重復(fù)的。也不知道每個(gè)數(shù)字重復(fù)幾次。請(qǐng)找出數(shù)組中任意一個(gè)重復(fù)的數(shù)字。 例如,如果輸入長(zhǎng)度為7的數(shù)組{2,3,1,0,2,5,3},那么對(duì)應(yīng)的輸出是第一個(gè)重復(fù)的數(shù)字2。
1.哈希法
2.定義備用數(shù)組,作為哈希使用,key是原數(shù)組每個(gè)元素 value是出現(xiàn)的次數(shù)
3.遍歷哈希數(shù)組
hash for i=0i;<arr.length;i++ hash[arr[i]]++; foreach hash as v return v
<?php function duplicate($numbers, &$duplication) { // write code here //這里要特別注意~找到任意重復(fù)的一個(gè)值并賦值到duplication[0] //函數(shù)返回True/False $flag=false; $hash=array(); for($i=0;$i<count($numbers);$i++){ $hash[$numbers[$i]]++;//關(guān)鍵 } foreach($hash as $k=>$v){ if($v>=2){ $flag=true; $duplication[0]=$k; break; } } return $flag; } $arr=[2,1,3,0,4]; $res=duplicate($arr,$duplication); var_dump($res); var_dump($duplication);
以上代碼經(jīng)過(guò)測(cè)試,希望對(duì)你有用,感謝大家對(duì)服務(wù)器之家的支持。