每日一題(一):找出兩個陣列中共有的數字

stanley發表於2021-03-10

最近準備記錄一下在leetcode刷到的演算法題和在面試中遇到的一些題目

題目:有兩個陣列[1,2,5,11,32,15,77][99,32,15,5,1,77,77]兩個陣列,寫段程式找出它們共同都擁有的數

解法一: 利用迴圈去一對一匹配,最後去重

function getPublicNumber($a,$b){

$a_length = count($a);
$b_length = count($b);
$arr = [];

for ($i = 0; $i < $a_length; $i++){

  for ($j = 0; $j < $b_length; $j++){

      if ($a[$i] == $b[$j]) $arr[] = $a[$i];

 }}
return array_unique($arr);
}

解法二:利用PHP內建函式

return array_intersect($a,$b);

解法三:利用PHP陣列函式

function getPublicNumber($a,$b) {
    $a = array_unique($a);
    $b = array_unique($b);

    foreach($a as $k => $v){
         if (!in_array($v,$b)){
              unset($a[$k]);
          }
    }
}
return $a;

歡迎各位留言補充更多的解法

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章