2両数加算(c++)
1166 ワード
時間の複雑さに問題があるので、リンクを修正します.
/**
* 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 *head = (ListNode*)malloc(sizeof(ListNode));
ListNode *p =head;
int temp,flag=0;
while(l1 || l2 || (flag == 1)){
temp=0;
//
if (l1 != nullptr)
temp+=l1->val;
if (l2 != nullptr )
temp+=l2->val;
if (flag == 1){
temp+=1;
p->val=temp%10;
}
else
p->val=temp%10;
// 1
if (temp >= 10)
flag=1;
else
flag=0;
//
ListNode *next = (ListNode*)malloc(sizeof(ListNode));
p->next = next;
p = p->next;
l1 = l1 ? l1->next : nullptr;
l2 = l2 ? l2->next : nullptr;
}
return head;
}
};