002addTwoNumbers

本秂侑毒 提交于 2020-04-05 17:33:52

刚开始的时候没太懂题目意思,就利用LeetCode的return提交进行测试,但是提交后发现结果是数组?
尝试用数组的方法,又报错。。。
后来才想到,LeetCode会不会在后面做些其他操作进行转换呀,测试了后发现确实是这样,
然后又测试发现LeetCode上可以使用console.log进行打印查看打印结果。。。快吐血了有没有

这题教我们使用链表,感觉这题比较妙的地方在与使用了carry,可以将本轮运算结果的进位放至下一轮,

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var addTwoNumbers = function(l1, l2) {
    let result = new ListNode(null)
    let re = result,carray = 0,s 
    while(l1||l2||carray)
    {
        const x = l1?l1.val:0
        const y = l2?l2.val:0
        s= x+y+carray
        re.next = new ListNode(s%10)
        carray = ~~(s/10)
        re = re.next
        l1&&(l1 = l1.next)
        l2&&(l2 = l2.next)
    }
    return result.next

};

将变量大都声明在外面是因为感觉这样执行速度会快点?magic,或许当时正赶上LeetCode服务器上运行的少?
不过,为了程序的可读性,不推荐这样做(虽然这里这样做了),工程中,程序的可读性占的比重要比这点性能优化多太多了

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!