合并两个有序链表
题目描述:
给定两个有序链表,拼接两个链表的所有节点将它们合并为一个新的有序链表,并返回。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
我的思路:
首先考虑特殊情况,l1或l2链表为空,这样只需返回另一个链表即可,对于普通的两个有序链表,因为有序,所以只需从头结点开始比较,较小的节点后移,再参与比较,这一过程可以采用递归的方法。
我的代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public 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;
}
else if(l1.val<l2.val)
{
l1.next=MergeTwoLists(l1.next,l2);
return l1;
}
else
{
l2.next=MergeTwoLists(l1,l2.next);
return l2;
}
}
}