题目链接:https://leetcode.com/problems/add-two-numbers/?tab=Description
Description
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
My answer
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
struct ListNode *l3,*ans;
int temp;
l3 = NULL;
temp = 0;
ans = malloc( sizeof( struct ListNode ) );
ans -> next = NULL;
while(l1 != NULL || l2 != NULL || temp != 0)
{
if( l3 == NULL )
{
l3 = ans;
}
else
{
l3 -> next = malloc( sizeof( struct ListNode ) );
l3 = l3 ->next;
l3 ->next = NULL;
}
if( l1 != NULL && l2 != NULL )
{
l3 -> val = l1 -> val + l2 -> val + temp;
}
else if( l1 != NULL)
{
l3 -> val = l1 -> val + temp;
}
else if( l2 != NULL)
{
l3 -> val = l2 -> val + temp;
}
else
{
l3 -> val = temp;
}
if( l3 ->val >= 10 )
{
temp = 1;
l3 -> val -= 10;
}
else
{
temp = 0;
}
if( l1 != NULL )
{
l1 = l1 -> next;
}
if( l2 != NULL )
{
l2 = l2 -> next;
}
}
return ans;
}
Submission Details
1562 / 1562 test cases passed.
| Status: Accepted |
Runtime:
59 ms
|
Submitted:
4 minutes ago
|