算法基本思想是用一个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(); ?>