剑指 Offer II 025. 链表中的两数相加

167 阅读1分钟

剑指 Offer II 025. 链表中的两数相加

将链表的节点值都放入数组中,然后使用归并方法,合二为一,最后将数组转换为链表结构就行

if (car == 1) brr.unshift(1); 当进位的时候,可能会用到这个,例如[9,9] 和 [1][1,0,0]

var addTwoNumbers = function (l1, l2) {
  var arr1 = [];
  var arr2 = [];
  var p1 = l1;
  var p2 = l2;
  while (p1 || p2) {
    if (p1) {
      arr1.unshift(p1.val);
      p1 = p1.next;
    }
    if (p2) {
      arr2.unshift(p2.val);
      p2 = p2.next;
    }
  }
  var brr = [];
  var car = 0;
  while (arr1.length || arr2.length) {
    if (arr1.length && arr2.length) {
      var sum = arr1.shift() + arr2.shift() + car;
    } else if (arr1.length) {
      var sum = arr1.shift() + car;
    } else {
      var sum = arr2.shift() + car;
    }
    brr.push(sum % 10);
    car = sum >= 10 ? 1 : 0;
  }
  brr.reverse();
  if (car == 1) brr.unshift(1);
  var node = new ListNode();
  var point = node;
  for (var val of brr) {
    point.next = new ListNode(val);
    point = point.next;
  }
  return node.next;
};