题意
使用链表模拟加法,虽然很简单,但是可能还是有一些边界问题需要处理。本来我是不想写的,但是我想着就不要眼高手低了,还是写一下试试,没想到一次就过了。。。。。 有图为证 尴尬。。。。。。
代码
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
;
}
};
转载请注明原文地址:https://blackberry.8miu.com/read-10954.html