题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路
- 创建两个节点,一个指向新链表的头结点;一个用于遍历插入新节点
- 通过创建哨兵节点可以省去构造新链表时对两个链表头结点谁大谁小的判断
- 并且下面的代码也不需要进行参数list1和list2的非空验证
代码
public static ListNode Merge(ListNode list1,ListNode list2) {
ListNode newList = new ListNode(0),//创建一个哨兵节点
p = newList;
//通过list1和list2来遍历自身
while (list1!=null && list2 !=null){
if(list1.val < list2.val){
p.next = list1;
list1 = list1.next;
}else{
p.next = list2;
list2 = list2.next;
}
p = p.next;
}
if(list1 == null){
p.next = list2;//p的next指向list2即可
}
if(list2 == null){
p.next = list1;
}
newList = newList.next;
return