算法基本思想是用一個hash表來存儲數組中的數是否出現,若是沒有出現,則存入結果數組,若是出現過,則直接跳過,php代碼實現以下: php
<?php /** * 給定N個數,從中找出M個不相同的數,m小於N */ function find($a,$m){ $n = count($a); //標誌位數組 $flag = array(); //結果數組 $result = array(); $i=0; $j=0; while($i<$m){ //若是查找完a數組都沒有找到,則直接退出 if($j==$n){ echo "find nothing"; exit(); //break; } $value = $a[$j]; //若是標誌位沒有出現,則放入 if($flag[$value]!==1){ array_push($result, $value); //置位標誌位 $flag[$value]=1; $i++; } $j++; } foreach ($result as $value) { echo $value." "; } } function main(){ $a = array(1,2,3,5,5,4,3,2,1); $m = 5; find($a,$m); } main(); ?>