美文网首页
#2 Add Two Numbers

#2 Add Two Numbers

作者: KedAyA | 来源:发表于2017-02-21 15:33 被阅读5次

这题主要考察对链表的操作,需要两个指针同时移动,注意加法要进位,并且注意指针移动到空后的处理,时间复杂度为O(n),注意链表第一位创建一个空0的小技巧,避免重复处理。注意链表最后一位数字的处理进位。

/**
  * 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) {
    var flag = 0,n1 = l1.val,n2 = l2.val,sum,result,head,temp;
    head = result = new ListNode(0);
    while(n1 !== null || n2 !== null) {
      n1 = n1 || 0;
      n2 = n2 || 0;
      sum = n1 + n2 + flag;
      if(sum >= 10) {
          flag = 1;
          sum -= 10;
      }
      else
        flag = 0;
      temp = new ListNode(sum);
      result.next = temp;
      result = temp;
      sum = 0;
      l1 = l1 && l1.next;
      l2 = l2 && l2.next;
      n1 = l1 && l1.val;
      n2 = l2 && l2.val;
    }
    if(flag == 1) {
        temp = new ListNode(1);
        result.next = temp;
    }
    return head.next;
  };

相关文章

网友评论

      本文标题:#2 Add Two Numbers

      本文链接:https://www.haomeiwen.com/subject/yqduwttx.html