87,907
社区成员
发帖
与我相关
我的任务
分享
var getLostNum=function(){
//存放返回的结果
var result=[];
//生成输入的数组
var inputArr=[];
//随机产生三个数
var num1=Math.floor(Math.random()*10000);
var num2=Math.floor(Math.random()*10000);
var num3=Math.floor(Math.random()*10000);
//不解释
for(var i=1;i<=10000;i++){
if(i==num1 || i==num2 || i==num3 && num1!==num2!==num3){
continue
}else{
inputArr.push(i);
}
}
//打乱顺序
inputArr.sort(function(){return Math.random() > 0.6})
//打印出随机取出的数
console.log(num1,num2,num3);
//临时数组
var tempArr=[]
tempArr.length=9999;
//相应位置设值为1
for(var i=0;i<inputArr.length;i++){
tempArr[inputArr[i]-1]=1
}
//值不为1 位置为丢失的数据
for(var k=0;k<tempArr.length;k++){
if(tempArr[k]!==1){
result.push(k+1);
}
}
console.log(result)
}()
var getLostNum1=function(){
//存放返回的结果
var result=[];
//生成输入的数组
var inputArr=[];
//随机产生三个数
var num1=Math.floor(Math.random()*10000);
var num2=Math.floor(Math.random()*10000);
var num3=Math.floor(Math.random()*10000);
//不解释
for(var i=1;i<=10000;i++){
if(i==num1 || i==num2 || i==num3 && num1!==num2!==num3){
continue
}else{
inputArr.push(i);
}
}
//打乱顺序
inputArr.sort(function(){return Math.random() > 0.6})
//打印出随机取出的数
console.log(num1,num2,num3);
//临时数组
inputArr.sort();
for(var i=0;i<inputArr.length;i++){
if((inputArr[i+1]-inputArr[i])>1){
for(var k=1;k<=inputArr[i+1]-inputArr[i];k++){
result.push[inputArr[i]+k]
}
}else{
continue;
}
}
console.log(result)
}()
var arr1=[];
for(var i=0;i<10000;i++){
arr1.push(i+1);
}
var n1=arr1.splice(Math.floor(Math.random()*arr1.length),1);
var n2=arr1.splice(Math.floor(Math.random()*arr1.length),1);
var n3=arr1.splice(Math.floor(Math.random()*arr1.length),1);
alert(n1+","+n2+","+n3);//先输出,为后面遍历查找缺省的数字做校对
var arr4=[];
for(var x=0;x<arr1.length;x++){
if(x+1==arr1[x]){
continue;
}
else{
arr4.push(x+1);
arr1.splice(x,0,x+1);
continue;
}
}
alert(arr4);
数组一开始是打乱的可以先排序下就行,只要遍历一遍,1ms运行时间
function getInfo(abc) {
var abcArr = abc.split(",");
var retstr ="";
for (var i = 0; i < abcArr.length; i++) {
for (var j = i + 1; j < abcArr.length; j++) {
if (parseInt(abcArr[i]) > parseInt(abcArr[j])) {
var cache = abcArr[i];
abcArr[i] = abcArr[j];
abcArr[j] = cache;
}
}
if (i > 0) {
var num = parseInt(abcArr[i]) - parseInt(abcArr[i - 1]);
if (num != 1) {
for (var k = 1; k < num; k++) {
retstr += (retstr.length>0?",":"") +(parseInt(abcArr[i - 1]) + k) ;
}
}
}
}
alert(retstr);
}
var obj = {},rs = [];
for(var i=0;i<arr.length;i++){
obj[arr[i]] = 1;
}
for(var i = 0;i<10000;i++){
if(obj[i]==null)
rs.push(i);
}
用了下js特性,时间复杂度O(n)
var setting = {
"num": 1000000,
"rndNum": 3
};
function createArr(){
var arr = [],
rnd = [];
for (var i = 0, len = setting.num; i < len; i++) {
arr.push(i);
}
for (var i = 0, len = setting.rndNum; i < len; i++) {
rnd[i] = arr.splice(Math.floor(Math.random() * arr.length), 1);
}
console.log('实测' + setting.num + '数据,随机抽掉的3个数是:' + rnd.join(","));
arr.sort(function(){return Math.random() > 0.6});
return arr;
}
function findMiss(arr){
var _fullArr = function(){
var ret = [];
for (var i = 0, len = setting.num; i < len; i++) {
ret[i] = 0;
}
return ret;
}(),
_arrStr = "",
_pos = 1,
_ret = [];
for (var i = 0, len = arr.length; i < len; i++) {
_fullArr[arr[i]] = 1;
}
_arrStr = _fullArr.join("");
for (var i = 0, len = setting.rndNum; i < len; i++) {
_pos = _arrStr.indexOf("0");
_arrStr = _arrStr.replace("0","1");
_ret.push(_pos);
}
return _ret;
}
var test_arr = createArr();
console.time("findMiss");
console.log("丢失的数为:" + findMiss(test_arr));
console.timeEnd("findMiss");