LeetCode 2. Add Two Numbers
问题链接
题目解析
给出两个数字链表,求二者之和,以链表形式返回。
解题思路
简单题。考察链表的应用,建立一个新链表,遍历两个链表,每位两个数字相加,添加一个新节点到新链表后面,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和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.