刚开始的时候没太懂题目意思,就利用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服务器上运行的少?
不过,为了程序的可读性,不推荐这样做(虽然这里这样做了),工程中,程序的可读性占的比重要比这点性能优化多太多了
来源:https://www.cnblogs.com/selfdef/p/12635729.html