牛客网笔试题代码逻辑没有任何问题,但是无法通过任何测试用例

今天牛客做的笔试题给整麻了,感觉代码逻辑和输入输出的处理都没有问题,但是测试用例一个也无法通过,找不出原因,求问各位大佬。

原题目大概是这样的:

输入描述:输入一个有序的二维数组 [[1,2,4],[2,3,7],[3,5,7],[4,5,8]]

输出描述:输出一个有序的一维数组 [1,2,2,3,3,4,4,5,5,7,7,8]

我的理解这道题就是 数组降维 + 排序,应该没错吧?所以写了这个代码(JS V8 环境):

let line
while(line = readline()){
  let arr = JSON.parse(line)
  let flat = function(arr){
    return arr.reduce((acc,cur) => {
      return Array.isArray(cur) ? acc.concat(...flat(cur)) : acc.concat(cur)
    },[])
  }
  let res = flat(arr).sort((a,b) => a-b > 0 ? 1 : -1)
  console.log(res)
}

但是通过率为 0%,最后也没拿到分。所以想问一下,有没有办法找到具体出错的原因呢?或者有哪些细节需要留意,减少像这样思路是对的但是通过率为0的情况?

javascript
225 views
Comments
登录后评论
Sign In
·

对象展开运算符了解下,不用这么麻烦,两行代码搞定

·

看你代码好像没什么问题,跑了一下:

const arr =  [[1,2,4],[2,3,7],[3,5,7],[4,5,8]];
let flat = function(arr){
  return arr.reduce((acc,cur) => {
    return Array.isArray(cur) ? acc.concat(...flat(cur)) : acc.concat(cur)
  },[])
}
let res = flat(arr).sort((a,b) => a-b > 0 ? 1 : -1)
console.log(res);

输出:

[
  1, 2, 2, 3, 3,
  4, 4, 5, 5, 7,
  7, 8
]

是不是输入处理有问题

·

有个更简单的做法,不考虑输入错误,把输入的字符串处理下,去掉中括号,剩下的用逗号分隔就得到一维数组了,无论嵌套多深这种做法都可以,最后就是一维数组排序