Solution:
Recursive solution is precise and clean.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null) return l2;
if (l2 == null) return l1;
if(l1.val < l2.val){
l1.next = mergeTwoLists(l1.next, l2);
return l1;
}
else{
l2.next = mergeTwoLists(l1, l2.next);
return l2;
}
}
}
non-recursion approach(trivial):
public class Solution {
public ListNode mergeTwoLists(ListNode L1, ListNode L2) {
ListNode dummy = new ListNode(0);
ListNode prev = dummy;
while(L1 != null || L2 != null){
if(L1 != null && L2 == null){
prev.next = L1;
prev = L1;
L1 = L1.next;
}
else if(L2 != null && L1 == null){
prev.next = L2;
prev = L2;
L2 = L2.next;
}
if(L1 != null && L2 != null){
if(L1.val < L2.val){
prev.next = L1;
prev = L1;
L1 = L1.next;
}
else{
prev.next = L2;
prev = L2;
L2 = L2.next;
}
}
}
return dummy.next;
}
}
No comments:
Post a Comment