(Js 语言)LEETCODE 题目,执行结果可通过,提交代码时运行时错误,如何解决?

2019-07-01 03:21:18 +08:00
 good1uck

具体问题,LEETCODE 第 17 题(简单难度) https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/submissions/

我的代码:

/**
 * @param {string} digits
 * @return {string[]}
 */
var letterCombinations = function(digits) {
    //1. 建立数字和字母的映射 2~9
    let map=['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
    //2. 字符串转数组,使其可遍历  23=>[2,3] 
    let nums = digits.split('')
    //3. 保存数字映射后的内容 [2,3]=>['abc','def'] 
    let code = []
    nums.forEach(item=>{
        if(map[item]){
            code.push(map[item])
        }
    })
    let comb = (arr)=>{
        let tmp=[]
        for(let i=0;i<arr[0].length;i++){
            for(let j=0;j<arr[1].length;j++){
                tmp.push(`${arr[0][i]}${arr[1][j]}`)
            }
        }
        arr.splice(0,2,tmp)
        if(arr.length>1){
            comb(arr)
        }
        else{
            return arr[0]
        }
        return arr[0]
    }
    return comb(code)
};

报错如下

执行出错信息:
Line 19: TypeError: Cannot read property 'length' of undefined

执行结果 & 本地环境可通过,提交代码时运行时错误,如何解决?

2935 次点击
所在节点    程序员
7 条回复
leishi1313
2019-07-01 03:51:57 +08:00
你这 digits 是空的时候就会报错了吧
wenzichel
2019-07-01 09:58:15 +08:00
当输入一个数字时会报错,`letterCombinations (2)`
jmc891205
2019-07-01 10:23:20 +08:00
leetcode 能看到出错的 case 的 input 是什么 自己去 debug 就好了
有的 OJ 看不到 那才叫一个郁闷
KuroNekoFan
2019-07-01 12:09:27 +08:00
这不是 medium 难度的么
parrotdance
2019-07-01 13:46:27 +08:00
执行代码是仅用一个用例测试. 而提交代码会使用多个用例测试, 出错证明你的代码无法应对某种特殊情况, 需要回头修改.
flyingghost
2019-07-01 17:42:48 +08:00
@jmc891205 那么一定会催生题库解题法。
select input {
case 123:
return 1;
case 456:
return 2;
}

不管什么类问题,时间复杂度全是 O(1)。
good1uck
2019-07-01 21:32:34 +08:00
@KuroNekoFan 打错了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/578830

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX