Skip to content

Commit 22fd86c

Browse files
Create Add_Two_Numbers.js
1 parent 031180e commit 22fd86c

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

LeetcodeProblems/Add_Two_Numbers.js

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
Add Two Numbers
3+
https://leetcode.com/problems/add-two-numbers/
4+
5+
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.
6+
7+
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
8+
9+
Example:
10+
11+
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
12+
Output: 7 -> 0 -> 8
13+
Explanation: 342 + 465 = 807.
14+
*/
15+
16+
/**
17+
* Definition for singly-linked list.
18+
* function ListNode(val) {
19+
* this.val = val;
20+
* this.next = null;
21+
* }
22+
*/
23+
/**
24+
* @param {ListNode} l1
25+
* @param {ListNode} l2
26+
* @return {ListNode}
27+
*/
28+
29+
var addTwoNumbers = function(l1, l2) {
30+
if(l1 === null) {
31+
return (l2 === null) ? new ListNode(0) : l2;
32+
} else if(l2 === null)
33+
return l1;
34+
35+
var elem = l1.val + l2.val;
36+
var number = new ListNode(elem % 10);
37+
var carry = (elem >= 10) ? 1 : 0;
38+
l1 = l1.next;
39+
l2 = l2.next;
40+
41+
const head = number;
42+
while(l1 !== null || l2 !== null) {
43+
var l1elem = 0;
44+
var l2elem = 0;
45+
if(l1 !== null) {
46+
l1elem = l1.val;
47+
l1 = l1.next;
48+
}
49+
if(l2 !== null) {
50+
l2elem = l2.val;
51+
l2 = l2.next;
52+
}
53+
54+
elem = l1elem + l2elem + carry;
55+
number.next = new ListNode((elem % 10));
56+
number = number.next;
57+
carry = (elem >= 10) ? 1 : 0;
58+
}
59+
if(carry === 1) {
60+
number.next = new ListNode(1);
61+
number = number.next;
62+
}
63+
return head;
64+
};

0 commit comments

Comments
 (0)