// 1.小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢? function sortNumber(a, b) { return a - b; } var arr = [1, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5,] arr.sort(sortNumber); var obj = {}; for (var i = 0; i < arr.length; i++) { if (!obj[arr[i]]) { obj[arr[i]] = 1 } else { obj[arr[i]]++ } } var newIndex = [] for (key in obj) { newIndex.push(obj[key]) } console.log("差最大值有" + newIndex[newIndex.length - 1] * newIndex[0] + "对") if (newIndex.length == 1) { console.log("差值最小有" + arr.length * (arr.length - 1) / 2 + "对") } else { var cfTime = 0 for (let i = 0; i < newIndex.length; i++) { if (newIndex[i] > 1) { // 说明有重复的 cfTime += newIndex[i] * (newIndex[i] - 1) / 2 } } if (cfTime > 0) { console.log("差值最小有" + cfTime + "对") } if (cfTime == 0) { //说明没有重复 var minTime = 0 var minVal = arr[arr.length - 1] - arr[0]; for (var i = 0; i < arr.length; i++) { if (arr[i + 1] - arr[i] < minVal) { minVal = arr[i + 1] - arr[i] } } for (var i = 0; i < arr.length; i++) { if (arr[i + 1] - arr[i] == minVal) { minTime++ } } console.log("差值最小有" + minTime + "对") } } //................................................................................... // 2.小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间你能帮帮小Q吗? var str1 = "AkleBiCeilD" var arr = str1.split(""); var newarr = [] for (var i = 0; i < arr.length; i++) { if (arr[i].charCodeAt(0) < 90) { //用编码值判断 newarr.push(arr[i]) arr.splice(i, 1) } } console.log(arr.concat(newarr)) //............................................................................. //3. 字符串截取 function quertUrl(name) { var url = "http://mail.163.com/?a=1&b=2&c=3" if (url.indexOf("?") < 0) { return "" } else { var arr1 = url.split("?")[1] var arr2 = arr1.split("&") var newObj = {}; for (var i = 0; i < arr2.length; i++) { newObj[arr2[i].split("=")[0]] = arr2[i].split("=")[1] } return newObj[name] } } console.log(quertUrl("c")) //........................................................................... // 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝? var keleNumber = 0 var ping = 0 function comPuterTime(n) { var a1 = Math.floor(n / 3) keleNumber += a1; var b1 = n % 3; if (a1 + b1 < 3) { if (a1 == 1 && b1 == 0) { ping = keleNumber } else if (a1 == 0 && b1 == 1) { ping = keleNumber } else if (a1 == 0 && b1 == 0) { ping = keleNumber } else { ping = keleNumber + 1 } } else { comPuterTime(a1+b1) } return ping } console.log("能喝" + comPuterTime(20) + "汽水") /*.........................................................................*/ var maxNum var minNum var val function computerNum(num1,num2) { maxNum=num1-num2>0? num1:num2 minNum=num1-num2<0? num1:num2 val=maxNum%minNum while (val!=0){ computerNum(minNum,val) } return minNum; } console.log("最大公约数"+computerNum(18,37)) //最小公倍数 function computerMAxNum(a,b) { return total=a*b/computerNum(a,b) } console.log("最小公倍数"+computerMAxNum(12,3)) /*.........................................................................*/ // 深度复制 Object.prototype.clone=function(){ //原型指向保持一致 var newobj=Object.create(Object.getPrototypeOf(this)); //自身属性保持一样 var propNames=Object.getOwnPropertyNames(this); propNames.forEach(function(item){ //保持每个属性的特性也一样 var des=Object.getOwnPropertyDescriptor(this,item); Object.defineProperty(newobj,item,des); },this); return newobj; } var obj={"a":"123","b":"456","c":[1,2,{"china":"good"}]} console.log(obj.clone()) /*............................................................................................*/ // 写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 ) function outResuls(str) { var newStr=str.substring(2,str.length).split("").reverse().join("") var val=0; for(var i=0;i<newStr.length;i++){ if(newStr[i]=="A"){ val+=parseFloat("10")* Math.pow(16,i); }else if(newStr[i]=="B"){ val+=parseFloat("11")* Math.pow(16,i); }else if(newStr[i]=="C"){ val+=parseFloat("12")* Math.pow(16,i); } else if(newStr[i]=="D"){ val+=parseFloat("13")* Math.pow(16,i); } else if(newStr[i]=="E"){ val+=parseFloat("14")* Math.pow(16,i); } else if(newStr[i]=="F"){ val+=parseFloat("15")* Math.pow(16,i); }else{ val+=parseFloat(newStr[i])* Math.pow(16,i); } } return val.toString(); } console.log(outResuls("0x12"))
js编程题个人解法
最新推荐文章于 2022-03-17 12:35:24 发布