文章出處

曾經看到有這樣一個JS題:
有一組數字,從1到n,從中減少了3個數,順序也被打亂,放在一個n-3的數組里
請找出丟失的數字,最好能有程序,最好算法比較快
假設n=10000

下面我也來貼一個算法。

function getArray (){ //創建隨機丟失3個數字的數組,并打亂順序。
    var arr =[]
    for(var i=1;i<=10000;i++){
        arr.push(i);
    }
    var a = arr.splice(Math.floor(Math.random()*arr.length),1);
    var b = arr.splice(Math.floor(Math.random()*arr.length),1);
    var c = arr.splice(Math.floor(Math.random()*arr.length),1);
    arr.sort(function(){
        return 0.5 - Math.random(); 
    });
    console.log('丟失數字為: ' + a + ',' + b + ',' + c + '\n數組元素個數: ' + arr.length);
    return arr;
}
function getMissMunber(arr){ //尋找丟失的數字。
    var mis = [],
        obj = {},
        len = 10000;
    for(var i=0; i<arr.length; i++){
        obj[arr[i]] = true;
    }
    for(var i=1; i<=len; i++){
        if(!obj[i]){
            mis.push(i);
        }
    }
    return mis;
}
var arr = getArray ();
var mis = getMissMunber(arr);
console.log('計算結果: ' + mis);

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()