文章出處
文章列表
曾經看到有這樣一個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);
文章列表
全站熱搜