zoukankan      html  css  js  c++  java
  • [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 :-)

  • 相关阅读:
    专题一 Java基础语法
    IOC属于那种设计模式?
    java桌面应用开发
    Gitblit
    基于JSoup库的java爬虫开发学习——小步快跑
    tomcat和solr的整合——小步快跑
    SSM mapper文件SQL语句里面的 小于号 Tag name expected 无法识别解读
    Java从FTP服务器中获取PDF文件数据
    idea 控制台log日志中文乱码解决方案
    Java开发文档Swagger的使用详细教程
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4732463.html
Copyright © 2011-2022 走看看