在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。 數組中某些數字是重覆的,但不知道有幾個數字是重覆的。也不知道每個數字重覆幾次。請找出數組中任意一個重覆的數字。 例如,如果輸入長度為7的數組{2,3,1,0,2,5,3},那麼對應的輸出是第一個重覆的數字2。 1.哈希法 2.定義備用數組,作... ...
在一個長度為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);