zoukankan      html  css  js  c++  java
  • 有1到10w这个10w个数,去除2个并打乱次序,如何找出那两个数

    一、此方法性能不太好 耗时 400ms

    //有1到10w这个10w个数,去除2个并打乱次序,如何找出那两个数?
    	var arrA = [];
    	var arrB = [];
    	var arrC = [];
    	var arrD = [];
    	//求出A数组的值
    	for(var i = 0; i < 10000; i++) {
    		arrA.push(i);
    	}
    	//A排序
    	arrA.sort(function(a, b) {
    		return Math.random() - 0.5
    	})
    	//求出B数组的值,并比较A/B两个数组,如果A数组里有B数组里的数,把这些数放大到C数组中
    	for(var i = 0; i < arrA.length - 2; i++) {
    		arrB[arrA[i]] = arrA[i];
    		//console.log(arrB);
    		if(arrB.indexOf(arrA[i]) > -1) {
    			arrC.push(arrA[i]);
    			//console.log(arrC);	
    		}
    	}
    
    //	在比较C/A两个数组,把B数组里面没有的数放到D数组中,没有的项即为抽出的数
    	for(var i = 0; i < arrA.length; i++) {
    		if(arrC.indexOf(arrA[i]) == -1) {
    			arrD.push(arrA[i]);
    			//console.log(arrD);	
    		}
    	}
    
    	//	console.log(arrA);
    	//	console.log(arrB);
    	//	console.log(arrC);
    	console.log(arrD);
    

      二、此方法简便,易懂,耗时少  大概50ms

          var arrA = [];
    	var arrB = [];
    	var arrC = [];
    
    	//求出A数组的值
    	for(var i = 0; i < 10000; i++) {
    		arrA.push(i);
    	}
    	//A排序
    	arrA.sort(function(a, b) {
    		return Math.random() - 0.5
    	})
    	//求出B数组的值
    	for(var i = 0; i < arrA.length - 2; i++) {
    		arrB[arrA[i]] = arrA[i];
    		//console.log(arrB);
    
    	}
        //如果B数组里的第i项为undefind,打印出i放在arrC for(var i = 0; i<arrB.length; i++){ if(arrB[i] == undefined){ arrC.push(i); } }

         console.log(arrC);

      

  • 相关阅读:
    ping命令
    第一次手写Loadrunner测试脚本
    select into from和insert into select
    网络安全领域常说的payload
    如何查看LoadRunner日志
    验证码测试
    HTTP的请求和响应
    LoadRunner能录制微信登录过程么?
    切面编程AOP之KingAOP
    编程规范
  • 原文地址:https://www.cnblogs.com/adong69/p/9202866.html
Copyright © 2011-2022 走看看