腾讯的面试题
有一组数字,从1到n,从中减少了3个数,顺序也被打乱,放在一个n-3的数组里
请找出丢失的数字,最好能有程序,最好算法比较快
假设n=10000
老题了,答一下
// 生成命题数组 function supplyRandomArray(){ var arr = [], n = 10000; for (var i = 0; i < n; i++) { arr.push(i + 1); } var num1 = arr.splice(Math.floor(Math.random() * arr.length), 1); var num2 = arr.splice(Math.floor(Math.random() * arr.length), 1); var num3 = arr.splice(Math.floor(Math.random() * arr.length), 1); document.write('随机抽掉的3个数是:' + num1 + ' 和 ' + num2 + ' 和 ' + num3 + '<br/><br/>'); arr.sort(function(){return Math.random() > 0.6}); return arr; } // 从数组中找出丢失的元素 function getMissElem(arr){ var result = [], obj = {}, len = arr.length; for(var i = 0; i < len; i++){ obj[arr[i]] = true; } for(var i = 1; i <= len; i++){ if(!obj[i]){ result.push(i); } } return result; } var arr = supplyRandomArray(), missElem = getMissElem(arr); document.write("丢失的数字为:" + missElem);