腾讯的面试题

有一组数字,从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);

 

 

 

posted @ 2012-07-27 13:11  亡魂  阅读(182)  评论(0编辑  收藏  举报
返回顶部