刚搞完华为OD机试,对用JS的玩家太不友好了
三道题,两简单一难。
第一题
我的答案:
第一题的答案,我的答案应该是满分吧,两个测试用例都通过了,但是提交了 却只有81%的测试覆盖率。是因为我的JS?
// var arrLen = readline() // var inputArr = readline().split(" ") // var N = readLine() // 去重后,排序,检测重叠,取数组首尾 var arrLen = 5 var inputArr = [3,2,3,4,2] var N = 2 var arr = Array.from(new Set(inputArr)) var targetArr = arr.sort((a,b)=>a-b) function getOutPut(arrLen,targetArr,N){ if(2 * N + 1 > targetArr.length){ console.log(-1) return } var minArr = targetArr.slice(0,N) var maxArr = targetArr.slice(targetArr.length - N,targetArr.length) var max =0; var min = 0; maxArr.forEach(item=>{ max = max + item }) minArr.forEach(item=>{ min = min + item }) console.log(max + min) } getOutPut(arrLen,targetArr,N)
第二题
第二题考得动态规划,我tm一个前端还是OD,直接放弃这道题了。
第三题
我的答案:
这个答案有他妈什么问题???? 为什么不给我通过? 为什么运行不出来?复杂度很高??? 我本地随便跑好吗??
垃圾评分系统!
// 栈与查找,easy // var input = readline().split(' ') var input = [1,2,2] // [9,3,5] var output=[] var arr = JSON.parse(JSON.stringify(input)) var target = [] while(arr.length){ if(arr[0] >= getMax(arr)){ target.push(arr.splice(0,1)[0]) }else{ arr.push(arr.splice(0,1)[0]) } } function getMax(arr){ return Math.max(...arr) } input.forEach(item=>{ var index = target.findIndex(subItem=>item===subItem) target[index] = 10 //避免重复时 多次选中 所以设置为一个不会存在的数字10 output.push(index) }) console.log(output)
唉,本来就是做着玩的,但是这个笔试要恶心一下我,不吐不快啊。