File tree Expand file tree Collapse file tree 1 file changed +78
-0
lines changed
src/codechallenge/linkedlist Expand file tree Collapse file tree 1 file changed +78
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments