题目:
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
思路:
使用指针的方式来进行,通过一个哨兵节点来连接两个链表的节点
代码如下:
/**
* 21. 合并两个有序链表
* 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
*/
public class LeetCode21{
public ListNode mergeTwoLists( ListNode list1, ListNode list2 ){
//通过一个哨兵节点来连接两个链表的节点
ListNode dummy = new ListNode( 0 );
ListNode pre = dummy;
while( list1 != null && list2 != null ){
//比较大小,谁更小,那么谁就是成为pre的后继,并且更新该引用的指向
if( list1.val >= list2.val ){
pre.next = list2;
list2 = list2.next;
}
else{
pre.next = list1;
list1 = list1.next;
}
//更新pre的指向
pre = pre.next;
}
//需要注意剩下还未追加的部分节点
pre.next = list1 == null ? list2 : list1;
return dummy.next;
}