刚搞完华为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)
唉,本来就是做着玩的,但是这个笔试要恶心一下我,不吐不快啊。

查看25道真题和解析