这题因为我做过Java版本,发觉跟Java版本几乎无差别。若有JS的小伙伴有更neat的解法欢迎留言。因为我是硬转JS刷题,有些JS的东西用的的确不是很6。
这题思路非常直观,就是直接做加法,注意进位即可。记得最后判断是不是还有额外的一个进位。
1 /** 2 * @param {ListNode} l1 3 * @param {ListNode} l2 4 * @return {ListNode} 5 */ 6 var addTwoNumbers = function(l1, l2) { 7 let dummy = new ListNode(0); 8 let cur = dummy; 9 let sum = 0; 10 let p1 = l1; 11 let p2 = l2; 12 while (p1 != null || p2 != null) { 13 if (p1 != null) { 14 sum += p1.val; 15 p1 = p1.next; 16 } 17 if (p2 != null) { 18 sum += p2.val; 19 p2 = p2.next; 20 } 21 cur.next = new ListNode(sum % 10); 22 sum = parseInt(sum / 10); 23 cur = cur.next; 24 } 25 if (sum === 1) { 26 cur.next = new ListNode(1); 27 } 28 return dummy.next; 29 };