LeetCode2——Add Two Numbers(两个链表中的数字相加,形成新链表)

来源:互联网 发布:网络拓扑图的网络设备 编辑:程序博客网 时间:2024/06/05 09:28

鄙人不才,故收录LeetCode中的解法和代码。


题目:



参考解法:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)     {       ListNode preHead(0), *p = &preHead;       int extra = 0;       while (l1 || l2 || extra)        {          int sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + extra;          extra = sum / 10;          p->next = new ListNode(sum % 10);          p = p->next;          l1 = l1 ? l1->next : l1;          l2 = l2 ? l2->next : l2;       }           return preHead.next;    }};


分析:这里主要有两个问题,一个是两个链表长度不一致时的处理,一个是相加>10时的数据处理。

  • 参考解法中运用三目运算符,很好地解决了第一个问题。即长度不一致时,比较短的那个链表用空来表示,数据为0。
  • 进位和结果位,分别用/和%运算得到。


原创粉丝点击