LeetCode 2. Add Two Numbers

问题链接

LeetCode 2

题目解析

给出两个数字链表,求二者之和,以链表形式返回。

解题思路

简单题。考察链表的应用,建立一个新链表,遍历两个链表,每位两个数字相加,添加一个新节点到新链表后面,flag记录进位问题。注意最高位的进位问题,有可能需要 多添加一个节点。

参考代码

/**
 * 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 *res = new ListNode(0);
        ListNode *cur = res;
        int num1, num2, sum, flag = 0;
        
        while (l1 || l2) {
            if (l1) {
                num1 = l1->val;
                l1 = l1->next;
            }
            else num1 = 0;
            if (l2) {
                num2 = l2->val;
                l2 = l2->next;
            }
            else num2 = 0;
            sum = num1 + num2 + flag;
            flag = sum / 10;
            
            cur->next = new ListNode(sum%10);
            cur = cur->next;
        }
        if (flag) cur->next = new ListNode(1);
        
        return res->next;
    }
};

LeetCode All in One题解汇总(持续更新中...)

本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.


posted @ 2018-03-09 17:46  AlvinZH  阅读(372)  评论(0编辑  收藏  举报