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 :-)

  • 相关阅读:
    webpack 配置别名,解决 import 时路径查找麻烦的问题
    Vue 中 diff 算法后更新 DOM 的方法
    React Native 开发环境搭建
    JavaScript 堆排序详解
    JavaScript 快速排序详解
    websocket 心跳重连
    AJAX 请求后使用 JS 打开新标签页被阻止的解决方法
    auto.js环境搭建
    Mac os 创建pppoe拨号
    mac os IntelliJ IDEA搭建环境
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4732463.html
Copyright © 2011-2022 走看看