LeetCode#21 .                                                Easy

Merge Two Sorted Lists


Merge two sorted linked lists and return it as a new sorted list. The new list should be made by splicing together the nodes of the first two lists.

 


Example 1:

Input: l1 = [1,2,4], l2 = [1,3,4]
Output: [1,1,2,3,4,4]

Example 2:

Input: l1 = [], l2 = []
Output: []

Example 3:

Input: l1 = [], l2 = [0]
Output: [0]

 

Constraints:

    The number of nodes in both lists is in the range [0, 50].
    -100 <= Node.val <= 100
    Both l1 and l2 are sorted in non-decreasing order.


Watch This Video To Know More about this Question And How To Approach This Question




Solution 1

class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if(l1 == null && l2 == null)
            return null;
        ListNode dummy = new ListNode(-1);
        ListNode ans = dummy;
        while(l1 != null && l2 != null){
            if(l1.val < l2.val){
                dummy.next = new ListNode(l1.val);
                l1 = l1.next;
                dummy = dummy.next;
            }else{
                dummy.next = new ListNode(l2.val);
                l2 = l2.next;
                dummy = dummy.next;
            }
        }
        while(l1 != null){
            dummy.next = new ListNode(l1.val);
            l1 = l1.next;
            dummy = dummy.next;
        }
        while(l2 != null){
            dummy.next = new ListNode(l2.val);
            l2 = l2.next;
            dummy = dummy.next;
        }
        return ans.next;
    }
}

Solution 2 

class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null){
return l2;
}
if (l2 == null){
return l1;
}

if (l1.val <= l2.val){
return new ListNode(l1.val, mergeTwoLists(l1.next, l2));
}else {
return new ListNode(l2.val , mergeTwoLists(l1, l2.next));
}
}
}