Skip to content

Instantly share code, notes, and snippets.

@perjerz
Created June 26, 2022 08:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save perjerz/56af138bf817d92ae3f5308c22f3e70d to your computer and use it in GitHub Desktop.
Save perjerz/56af138bf817d92ae3f5308c22f3e70d to your computer and use it in GitHub Desktop.
Merge Two Sorted Lists -- Leetcode
// https://leetcode.com/problems/merge-two-sorted-lists/submissions/
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} list1
* @param {ListNode} list2
* @return {ListNode}
*/
var mergeTwoLists = function(list1, list2) {
let n1 = list1;
let n2 = list2;
if (!n1 && !n2) {
return null;
} else if (!n1) {
return n2;
} else if (!n2) {
return n1;
}
else if (n1.val >= n2.val) { // n2 (least) main
while (n2 && n1) {
while (n2.next && n1.val >= n2.next.val) {
n2 = n2.next;
}
const tempn2next = n2.next;
n2.next = n1;
if (!tempn2next) {
return list2;
}
while(n1.next && tempn2next && n1.next.val <= tempn2next.val) {
n1 = n1.next;
}
const tempn1next = n1.next;
n1.next = tempn2next; // join n1 to n2
n1 = tempn1next;
n2 = tempn2next;
}
return list2;
} else { //n1 main
while (n1 && n2) {
while (n1.next && n1.next.val < n2.val) {
n1 = n1.next;
}
const tempn1next = n1.next;
n1.next = n2;
if (!tempn1next) {
return list1;
}
while(n2.next && tempn1next && n2.next.val <= tempn1next.val) {
n2 = n2.next;
}
const tempn2next = n2.next;
n2.next = tempn1next;
n2 = tempn2next;
n1 = n1.next;
}
return list1;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment