zoukankan      html  css  js  c++  java
  • LeetCode-Add Two Numbers

    没有难度的题目,纯用来练习链表操作和递归的使用的,难得的一次就能ac大小数据呀!

     1 class Solution {
     2 public:
     3     ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
     4         // Start typing your C/C++ solution below
     5         // DO NOT write int main() function
     6         ListNode *res = add(l1, l2, false);
     7         return res;
     8      }
     9      ListNode *add(ListNode *l1, ListNode *l2, bool flag) {
    10          int carry = 0;
    11          bool cflag = false;
    12          if (flag) {
    13              carry = 1;
    14          }
    15          if (l1 == NULL && l2 == NULL) {
    16              if (!flag) {
    17                  return NULL;
    18              }
    19              ListNode *node = new ListNode();
    20              node->val = carry;
    21              node->next = NULL;
    22              return node;
    23          }
    24          if (l1 == NULL) {
    25              ListNode *node = l2;
    26              node->val = l2->val + carry;
    27              if (node->val >= 10) {
    28                  node->val -= 10;
    29                  cflag = true;
    30              }
    31              node->next = add(NULL, l2->next, cflag);
    32              return node;
    33          } 
    34          if (l2 == NULL) {
    35              ListNode *node = l1;
    36              node->val = l1->val + carry;
    37              if (node->val >= 10) {
    38                  node->val -= 10;
    39                  cflag = true;
    40              }
    41              node->next = add(l1->next, NULL, cflag);
    42              return node;
    43          }
    44          ListNode *node = l1;
    45          node->val = l1->val + l2->val + carry;
    46          if (node->val >= 10) {
    47              node->val -= 10;
    48              cflag = true;
    49          }
    50          node->next = add(l1->next, l2->next, cflag);
    51          return node;
    52      }
    53 };

    记得以前在待字闺中上看到过相似的题目,好像叫单链表和之恋,那道题目中的链表表示的数是正向的,

    而且不允许用递归,而且还要求最多只能扫描链表两遍。当时没想出来,而且陈利人(http://weibo.com/lirenchen)给的答案也没有很好的

    解决这个问题,后来好像有人给出了一个很巧妙的答案。

  • 相关阅读:
    正则表达式速查表
    Python第三方库管理Anaconda
    Python3.x和Python2.x的区别
    python 学习 “笨办法学python”(随书补充)
    python 中文输入的注意事项
    mongodb update 字符 操作(补充)
    mongodb update 字符 操作
    04.视频播放器通用架构实践
    05.视频播放器内核切换封装
    03.视频播放器Api说明
  • 原文地址:https://www.cnblogs.com/chasuner/p/addTwoNumbers.html
Copyright © 2011-2022 走看看