在一個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。 例如,如果輸入長度為7的陣列{2,3,1,0,2,5,3},那麼對應的輸出是第一個重複的數字2。 1.雜湊法 2.定義備用陣列,作為雜湊使用,key是原陣列每個元素 value是出現的次數 3.遍歷雜湊陣列 hash for i=0i;<arr.length;i++ hash[arr[i]]++; foreach hash as v return v
<?php
function duplicate($numbers, &$duplication)
{
// write code here
//這裡要特別注意~找到任意重複的一個值並賦值到duplication[0]
//函式返回True/False
$flag=false;
$hash=array();
for($i=0;$i<count($numbers);$i++){
$hash[$numbers[$i]]++;//關鍵
}
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);