aboutsummaryrefslogtreecommitdiff
path: root/MergeLists.java
diff options
context:
space:
mode:
authorMichael Hunteman <michael@michaelted.xyz>2022-09-22 10:14:04 -0500
committerMichael Hunteman <michael@michaelted.xyz>2022-09-22 10:14:04 -0500
commit6522012065712fb0ece31bff9ff10b38a83b10e1 (patch)
tree743f3c13d08be9f60bad57b74e7a1fe7cc675e89 /MergeLists.java
Initial commit
Diffstat (limited to 'MergeLists.java')
-rw-r--r--MergeLists.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/MergeLists.java b/MergeLists.java
new file mode 100644
index 0000000..e939511
--- /dev/null
+++ b/MergeLists.java
@@ -0,0 +1,62 @@
+import java.lang.*;
+import java.util.*;
+import node.*;
+
+class MergeLists {
+ public static ListNode mergeTwoLists(ListNode list1, ListNode list2) {
+ if (list1 == null && list2 == null)
+ return new ListNode();
+ else if (list1 == null)
+ return list2;
+ else if (list2 == null)
+ return list1;
+
+ ListNode curr1 = list1;
+ ListNode curr2 = list2;
+
+ ListNode head;
+ if (curr1.val < curr2.val) {
+ head = curr1;
+ curr1 = curr1.next;
+ } else {
+ head = curr2;
+ curr2 = curr2.next;
+ }
+
+ ListNode node = head;
+ while (curr1 != null && curr2 != null) {
+ if (curr1.val < curr2.val) {
+ node.next = curr1;
+ curr1 = curr1.next;
+ } else {
+ node.next = curr2;
+ curr2 = curr2.next;
+ }
+ node = node.next;
+ }
+
+ if (curr1 == null) {
+ node.next = curr2;
+ } else {
+ node.next = curr1;
+ }
+
+ return head;
+ }
+
+ public static void main(String[] args) {
+ ListNode second1 = new ListNode(4, null);
+ ListNode first1 = new ListNode(2, second1);
+ ListNode list1 = new ListNode(1, first1);
+
+ ListNode second2 = new ListNode(4, null);
+ ListNode first2 = new ListNode(3, second2);
+ ListNode list2 = new ListNode(1, first2);
+
+ ListNode curr = mergeTwoLists(list1, list2);
+ while (curr != null) {
+ System.out.println(curr.val);
+ curr = curr.next;
+ }
+ }
+}