在給定的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();

    	
?>
相關文章
相關標籤/搜索