在给定的N长度的数组中找出M个不相同的数

      算法基本思想是用一个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."&nbsp;";
    }
    
    
    
    
}




function main(){
    $a = array(1,2,3,5,5,4,3,2,1);
    $m = 5;
    find($a,$m);
}


main();

    	
?>
相关文章
相关标签/搜索