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.
一个简单的归并算法,归并两个已经排好序列的链表
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null)return l2;
else if(l2==null)return l1;
ListNode n;
if(l1.val<=l2.val)
{
n=l1;
n.next=mergeTwoLists(l1.next,l2);
}
else
{
n=l2;
n.next=mergeTwoLists(l1,l2.next);
}
return n;
}
}
如果想要原地归并怎么做呢?
public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null)return l2;
else 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;
}
}
}