刚搞完华为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)

唉,本来就是做着玩的,但是这个笔试要恶心一下我,不吐不快啊。

#华为机试##华为##笔经#
全部评论
第一题 #include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { int size,n; int sum = 0; cin >> size; vector<int> arr(size); for (int i = 0; i < size; i++) { cin >> arr[i]; } sort(arr.begin(), arr.end()); arr.erase(unique(arr.begin(), arr.end()),arr.end()); cin >> n; if ((n - 1) >= (arr.size() - n)) cout << "-1" << endl; else { for (int i = 0; i < n ; i++) { sum += arr[i]; } for (int i = arr.size() - n ; i < arr.size() ; i++) { sum += arr[i]; } cout << sum << endl; } }
3 回复
分享
发布于 2021-09-10 00:31
第一题那个if里面的条件写错了。js不会,第三题没怎么看懂,但是看懂思路了,每次取第一个最大就放到out,不是就放到队尾,但是输出是每个任务的执行的序号,其实直接排序就可。而且你这个复杂度确实很高,正确了基本上也不会a的。
点赞 回复
分享
发布于 2021-09-02 17:40
联易融
校招火热招聘中
官网直投
别人只是给两个输入案例而已,又不是全部的输入,你的代码少考虑了一些情况而已
点赞 回复
分享
发布于 2021-09-07 10:14
😭我也有点蒙,昨天第一次机试,第一个代码怎么看怎么没问题,但是死活跑不通,后面的题都没看完
点赞 回复
分享
发布于 2021-09-07 20:35
牛客系统对JavaScript不是特别友好,我之前做某公司笔试题时,老是出错,最后改成Java就通过了,所以还是学一手Java的好
点赞 回复
分享
发布于 2021-09-08 15:10
第三题的第二个例子,不应该是1,2,0吗
点赞 回复
分享
发布于 2021-09-08 20:28
第一题,昨天做了Java版本的 通过 90%,剩下的,死活整不出来了
点赞 回复
分享
发布于 2021-09-11 15:24
lz加油!
点赞 回复
分享
发布于 2022-04-27 11:33

相关推荐

3 47 评论
分享
牛客网
牛客企业服务