Skip to content

Commit 050d176

Browse files
committedAug 29, 2019
Merge two sorted linked lists
1 parent d6b8524 commit 050d176

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed
 
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package codechallenge.linkedlist;
2+
3+
import me.premaseem.reusable.MySLLNode;
4+
import org.junit.Test;
5+
6+
/*
7+
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
8+
9+
Example:
10+
11+
Input: 1->2->4, 1->3->4
12+
Output: 1->1->2->3->4->4
13+
*/
14+
public class MergeTwoSortedLinkedList {
15+
16+
17+
// Test Driven Development by Aseem Jain
18+
@Test
19+
public void test() {
20+
MySLLNode n1 = new MySLLNode(-100);
21+
MySLLNode n2 = new MySLLNode(0);
22+
MySLLNode n3 = new MySLLNode(100);
23+
MySLLNode n4 = new MySLLNode(250);
24+
25+
MySLLNode m1 = new MySLLNode(-200);
26+
MySLLNode m2 = new MySLLNode(0);
27+
MySLLNode m3 = new MySLLNode(200);
28+
29+
30+
n1.next = n2;
31+
n2.next = n3;
32+
n3.next = n4;
33+
34+
m1.next = m2;
35+
m2.next = m3;
36+
37+
38+
39+
MySLLNode newHead = merge1(n1,m1);
40+
41+
while(newHead.next != null){
42+
System.out.println(newHead.data + "< " + newHead.next.data);
43+
assert newHead.data <= newHead.next.data;
44+
newHead = newHead.next;
45+
}
46+
47+
48+
}
49+
50+
private MySLLNode merge1(MySLLNode n1, MySLLNode m1) {
51+
MySLLNode r1 = new MySLLNode(Integer.MAX_VALUE);
52+
MySLLNode rs = r1;
53+
54+
while (n1 != null && m1 != null){
55+
56+
if(n1.data < m1.data){
57+
r1.next = n1;
58+
n1= n1.next;
59+
}else {
60+
r1.next = m1;
61+
m1= m1.next;
62+
}
63+
r1 = r1.next;
64+
65+
}
66+
67+
if(n1 != null){
68+
r1.next = n1;
69+
}
70+
if(m1 != null){
71+
r1.next = m1;
72+
}
73+
74+
return rs.next;
75+
}
76+
77+
78+
}

0 commit comments

Comments
 (0)