• [LeetCode] Add Two Numbers


    The idea is to add the two numbers (represented by linked lists) nodes after nodes and store the result in the longer list. Since we may append the additioanl carry bit after the longer list, we need to be careful not to reach the NULL pointer of the longer list.

    The code is as follows. In fact, it is of time O(length(l1) + length(l2)) (the two calls oflistLength) and includes two-pass, but it is very fast in the OJ :-)

    The code is as follows, about 20 lines. You may run it on the following examples and then you will understand the details of the code.

     1 class Solution {
     2 public:
     3     ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
     4         if (listLength(l1) < listLength(l2))
     5             return addTwoNumbers(l2, l1);
     6         ListNode *r1 = l1, *r2 = l2;
     7         int c = 0;
     8         bool isEnd = false;
     9         while (r2) {
    10             int val = r1 -> val + r2 -> val + c;
    11             r1 -> val = val % 10;
    12             c = val / 10;
    13             if (r1 -> next) r1 = r1 -> next;
    14             else isEnd = true;
    15             r2 = r2 -> next;
    16         }
    17         while (c) {
    18             int val = isEnd ? c : r1 -> val + c;
    19             if (isEnd) r1 -> next = new ListNode(val % 10);
    20             else r1 -> val = val % 10;
    21             c = val / 10;
    22             if (r1 -> next) r1 = r1 -> next;
    23             else isEnd = true;
    24         }
    25         return l1;
    26     }
    27 private:
    28     int listLength(ListNode* head) {
    29         return head ? 1 + listLength(head -> next) : 0;
    30     }
    31 };

    Examples:

    1. l1 = 5 -> NULL, l2 = 5 -> NULL;
    2. l1 = 1 -> NULL, l2 = 9 -> 9 -> NULL;
    3. l1 = 8 -> 9 -> NULL, l2 = 1 - >NULL.

    Well, you guess what? Yeah, these are just the test cases which my code gives mistake before the debugging :-)

  • 相关阅读:
    css 重新学习系列(1)
    sublime Text 使用
    值得收藏的前端大牛博客
    javascript中最常用的方法
    ie6,ie7兼容性总结
    jQuery学习笔记(二)
    jQuery学习笔记(一)
    php smarty
    javascript DOM(2) 一个网页上切换显示不同的图片或文本
    effective c++ 8: Prevent exceptions from leaving destrctors
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4732463.html
Copyright © 2020-2023  润新知