• 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)给的答案也没有很好的

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

  • 相关阅读:
    js:通过正则匹配获取页面的url中的参数
    BZOJ 4873 寿司餐厅 网络流
    BZOJ 3308 毒瘤结论 网络流
    BZOJ3451 CDOJ1562点分治+FFT
    P3731 二分图匹配必经边
    Hdu 6268 点分治 树上背包 bitset 优化
    Hdu 1517 巴什博奕变形
    dsu on tree
    CF #546 D.E
    HNOI 世界树 虚树
  • 原文地址:https://www.cnblogs.com/chasuner/p/addTwoNumbers.html
Copyright © 2020-2023  润新知