Skip to content

Commit cad42ee

Browse files
add solution 0002 [golang]
1 parent 567c19d commit cad42ee

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* type ListNode struct {
4+
* Val int
5+
* Next *ListNode
6+
* }
7+
*
8+
* Report by leetcode.com
9+
* Runtime: 12 ms, Memory Usage: 5 MB
10+
*/
11+
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
12+
head := &ListNode{}
13+
currentNode1 := l1
14+
currentNode2 := l2
15+
currentHead := head
16+
sum := 0
17+
nextSum := 0
18+
19+
for true {
20+
if currentNode1 != nil || currentNode2 != nil {
21+
if currentNode1 == nil {
22+
sum = nextSum + currentNode2.Val
23+
nextSum = sum / 10
24+
currentNode2 = currentNode2.Next
25+
} else if currentNode2 == nil {
26+
sum = nextSum + currentNode1.Val
27+
nextSum = sum / 10
28+
currentNode1 = currentNode1.Next
29+
} else {
30+
sum = nextSum + currentNode1.Val + currentNode2.Val
31+
nextSum = sum / 10
32+
currentNode1 = currentNode1.Next
33+
currentNode2 = currentNode2.Next
34+
}
35+
currentHead.Val = sum % 10
36+
// If there are elements present in the nodes then
37+
// make a new node for future addition otherwise we
38+
// will get unnecessary (0 --> <nil>) node in the end.
39+
if currentNode1 != nil || currentNode2 != nil {
40+
currentHead.Next = &ListNode{}
41+
currentHead = currentHead.Next
42+
} else if nextSum != 0 {
43+
// If nextSum is not 0 this means that there was some carry value
44+
// left in it which should be further.
45+
currentHead.Next = &ListNode{nextSum, nil}
46+
}
47+
} else {
48+
break
49+
}
50+
}
51+
52+
return head
53+
}

0 commit comments

Comments
 (0)