LeetCode刷题系列之Add Two Numbers

Description

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

Solution

class Solution {
public:
 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
 ListNode *l1Head = l1;
 ListNode *l2Head = l2;

 ListNode *addedHead = NULL;

 ListNode *item = NULL;

 int l1Val = 0;
 int l2Val = 0;
 int sumVal = 0;
 bool bDeca = false;
 bool bQuitL1 = false;
 bool bQuitL2 = false;

 while (true) {
     if (l1Head) {
         l1Val = l1Head->val;

         l1Head = l1Head->next;
     } else {
         l1Val = 0;
         bQuitL1 = true;
     }

     if (l2Head) {
         l2Val = l2Head->val;

         l2Head = l2Head->next;
     } else {
         l2Val = 0;
         bQuitL2 = true;
     }

     if (bQuitL1 && bQuitL2 && !bDeca) {
         break;
     }

     if (bDeca) {
         sumVal += 1;
         // reset bDeca
         bDeca = false;
     }

     sumVal += l1Val + l2Val;
     if (0 != (sumVal / 10)) {
         bDeca = true;
         sumVal = sumVal % 10;
     }

     item = new ListNode(sumVal);
     // reset sumVal
     sumVal = 0;
     if (NULL == addedHead) {
         addedHead = item;
     } else {
         ListNode *p = addedHead;
         while (p->next) {
             p = p->next;
         }
         p->next = item;
     }
 }

 return addedHead;
 }
};

汇总

性能一般,需要优化。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,792评论 0 33
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 10,129评论 0 23
  • 犹豫不决,是我性格中的软点。有时候很多事情讲求的是时机,抓住机会坚持到底也许会是另一片天空,所以我讨厌自己的犹豫不...
    濛濛细语阅读 173评论 0 0
  • 文 | 时青言 — 01 — 黑暗中,感觉心脏突然跳得很快,我试图睁开眼睛,但这样一个简单的动作,却好像用了一个世...
    时青言阅读 4,690评论 206 206
  • 没音信的第一场雨 后一天落下的 带来愉悦和不劳作 十几颗青草 不想随风 不愿随风 风狠狠的刮 风急急的刮 我高举铡...
    风吹在村庄的风上阅读 143评论 0 2