将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
这个题就跟前面写的一篇合并有序链表是一样的,不过这个是用Java实现,ListNode用着极为方便!!
class Solution {
public ListNode mergeTwoLists(ListNode l1 , ListNode l2){
ListNode headNode = new ListNode(0);
ListNode tailNode = headNode;
while(l1 != null && l2 != null){
if(l1.val < l2.val){
tailNode .next = l1;
tailNode = tailNode .next;
l1 = l1.next;
}
else{
tailNode .next = l2;
tailNode = tailNode .next;
l2 = l2.next;
}
}
if(l1 == null ){
tailNode .next = l2;
}
else
{
tailNode .next = l1;
}
return headNode.next;
}
}
总体的思路就是先设置一个头结点,然后让尾结点指向他,然后把两个链表的数据域进行比较,谁小就让尾结点指向他,尾结点指向他了之后要往后移一位,问题的关节在于移到一个链表为空的时候~这个时候只要尾指针直接指向剩下的链表