V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
good1uck
V2EX  ›  程序员

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

  •  
  •   good1uck · 2019-07-01 03:21:18 +08:00 · 2936 次点击
    这是一个创建于 2005 天前的主题,其中的信息可能已经有所发展或是发生改变。

    具体问题,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
    

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

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

    不管什么类问题,时间复杂度全是 O(1)。
    good1uck
        7
    good1uck  
    OP
       2019-07-01 21:32:34 +08:00 via Android
    @KuroNekoFan 打错了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1407 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:27 · PVG 01:27 · LAX 09:27 · JFK 12:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.