-
Notifications
You must be signed in to change notification settings - Fork 0
/
2.Add Two Numbers.cpp
62 lines (58 loc) · 2.17 KB
/
2.Add Two Numbers.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//🎯 🎯 DAY 1 PROBLEM 2(Daily Challenge atleast 2 problems leetcode submit)
//🥵🥵Look for the corner cases in this question specially
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
ListNode* head=NULL;
ListNode* temp;
int carry=0;
while (l1||l2)
{
//📌📌The NULL of l1 is checked i.e. if one linked list becomes NULL, then 0 is
//added instead of l1->val. l1->val will give exception error if l1 is NULL
//😖😖Also, add the carry to the result before checking whether res/10>0
//as if on adding carry also, it gives greater than 0, then we have to do
//res%10 for the answer linked list
int res=(l1?l1->val:0)+(l2?l2->val:0)+carry;
if(head==NULL)
{
head= new ListNode;
head->val=(res>=10?res%10:res);
temp=head;
if(res/10>0) carry=res/10;
}
else
{
if(res/10>0)
{
ListNode* nextptr=new ListNode;
nextptr->val=(res%10);
temp->next=nextptr;
carry=res/10;
}
else
{
ListNode* nextptr=new ListNode;
nextptr->val=(res);
temp->next=nextptr;
carry=0;
}
temp=temp->next;
}
if(l1) l1=l1->next;
if(l2) l2=l2->next;
}
//😯😯Also, the answer linked list can exceed the length of two given linked lists
//i.e. (l and m where l>m )by 1, so for that condition check whether the last
//element in linked list i.e the first digit in number is >10 or not. If >10, then
//add another element in answer linked list for storing (l+1)th number
if(carry>0)
{
ListNode* nextptr=new ListNode;
nextptr->val=carry;
temp->next=nextptr;
}
return head;
}
};