题意
使用链表模拟加法,虽然很简单,但是可能还是有一些边界问题需要处理。本来我是不想写的,但是我想着就不要眼高手低了,还是写一下试试,没想到一次就过了。。。。。
有图为证
尴尬。。。。。。
代码
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int len1 = getLen(l1);
int len2 = getLen(l2);
if (len1 < len2)swap(l1, l2);
ListNode* ans = l1;
ListNode* curl1 = l1;
ListNode* curl2 = l2;
while (curl2) {
curl1->val += curl2->val;
if (curl1->val >=10) {
ListNode* curT = curl1;
while (curT->val >=10) {
if (curT->next == NULL) {
curT->next = new ListNode(0);
}
curT->val -= 10;
curT->next->val++;
curT = curT->next;
}
}
curl1 = curl1->next;
curl2 = curl2->next;
}
return ans;
}
int getLen(ListNode* head) {
int cnt = 0;
while (head) {
cnt++;
head = head->next;
}
return cnt;
}
};