有一组数字,从1到n,从中减少了3个数,顺序也被打乱,放在一个n-3的数组里
请找出丢失的数字,最好能有程序,最好算法比较快
请找出丢失的数字,最好能有程序,最好算法比较快
假设n=10000
- ->我这里是算法的一种。只是mark一下。传送门
// 生成命题数组
function supplyRandomArray(){
var arr = [], n = 100;
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);