[leedcode 21] Merge Two Sorted 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) { //此题是两个已排序链表合并,需要借助三个节点,两个节点是两个链表的头结点,另一个节点是合并链表的尾节点 //时间复杂度O(m+n) //注意细节:当一个链表为空时,要直接连接另一个链表(省时间) //比较讨巧的细节是,首先要申请一个新节点,这样省去了要单独处理头结点的问题 ListNode newHead=new ListNode(-1); ListNode p1=l1; ListNode p2=l2; ListNode last=newHead; while(p1!=null&&p2!=null){ if(p1.val<=p2.val){ last.next=p1; p1=p1.next; }else{ last.next=p2; p2=p2.next; } last=last.next; } if(p1!=null){ last.next=p1; } if(p2!=null){ last.next=p2; } return newHead.next; } }