第一天leetcode刷題
解題思路: 這題的的關鍵在於鏈表的數儲存是倒序的,因此只要從鏈表頭相加,再將所得數挨個儲存即可,但是要注意兩數相加有可能大於10要進一位。
具體代碼實現如下:
/**
* 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* current;
ListNode* ret = nullptr;
int num = 0;
while(l1 && l2)
{
int sum = l1 ->val + l2 ->val + num;
ListNode* node = new ListNode(sum % 10);
num = sum / 10;
ret ? current ->next = node : ret = node;
current = node;
l1 = l1 ->next;
l2 = l2 ->next;
}
if(l2)
l1 = l2;
while(l1)
{
int sum = num + l1 ->val;
ListNode* node = new ListNode(sum % 10);
num = sum / 10;
current ->next = node;
current = node;
l1 = l1 ->next;
}
if(num)
{
ListNode* node = new ListNode(num);
current ->next = node;
}
return ret;
}
};