題目:有一組數字,從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次,顯然這是錯誤的 這個題和田忌賽馬有那麼一點點的相似,...