[PHP] 演算法-陣列重複數字統計的PHP實現

weixin_33912246發表於2018-09-22
在一個長度為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);

  

相關文章