一道騰訊前端試題

2021-06-10 08:08:05 字數 1286 閱讀 8999

題目:有一組數字,從1到n(假設n=10000),從中任意刪除了3個數,順序也被打亂,剩餘數字放在乙個n-3的陣列裡,請找出丟失的數字,要求演算法比較快。

方法一,(我寫的程式):

var ary = [1, 5, 7, 6, 4, 8, 10];
var n = ary.length + 3;  

var newary = ;  

document.write("假設n=" + n + "

");  

ary.sort(function(a, b));  

document.write("初始陣列:" + ary + "

");  

for(var i = 1, j=0; i <= n; i ++,j++) else if(diff > 0)  

}  }  

//alert(newary);  

document.writeln("缺少的數:" + newary); 

下面是另外兩位工程師給出的答案(本文的最後會給出一位網友對三種實現的效果測試對比)

方法二,

var  n = 10;
var oldarr = [5,1,6,3,7,8,10];//缺失的源陣列997個數;  

var newarr = array(11);  

var lostarr = ;//要找的數的陣列  

for(var i = 0; i < n-3; i++)   

for(var j = 0; j < newarr.length; j++)   

}  lostarr.shift(0);  

alert(lostarr); 

方法三,

var num = [2,1,3,5,4,6,7,9,10,11,12,14,15,17,18,19,20,22,23,21];
numnum = num.sort(function(a,b));  

var y={};  

for(var i=0;iy[num[i]] = num[i];  

}  var m=1;  

var k=;  

while(m<=23)  

m++;  

}  alert(k); 

有位網友對上面三種方法進行了運算時間的測試(為了測試效果明顯,他將資料量增加到了十萬條),測試效果如下:

方法一,200ms左右;方法二,70ms左右;方法三,260ms左右。

具體什麼樣,我自己並沒有測試,不過以這位網友提供的結果來看,我的答案還不是最差的,呵呵~~

一道騰訊校招試題

題目 猴子摘香蕉一次可以摘1個或2個,總共50個,有多少種摘法?分析 得到如下規律 實際上是乙個斐波那契數列 以下為我使用的4種解法,分別是遞迴 迭代 64位整型數 陣列 類似於大數相加 1 遞迴 其中加入了計時器 include include using namespace std int f ...

一道騰訊面試題

view plainprint?已知有個rand7 的函式,返回1到7隨機自然數,讓利用這個rand7 構造rand10 隨機1 10。using system using system.collections.generic using system.linq using system.text ...

騰訊的一道測試題

有36輛電單車6個賽道,在沒有計時器的情況下,如果要選出跑的最快的三輛車,至少需要幾次比賽?我最初的想法是 要選出最快的三輛車,先讓這36輛車分成6組,每一組比一下,選出每一組的第一名,然後讓這6個第一名比一次,選出前三名就行了,果斷的選擇了7次,顯然這是錯誤的 這個題和田忌賽馬有那麼一點點的相似,...