目录
1 题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
2 解题思路
对于两个已经排序的链表,我们可以定义一个虚拟结点,通过比较两个链表值的大小,完成链表的拼接工作。最后返回虚拟结点的下一结点即可。
3 代码实现
public ListNode Merge(ListNode list1,ListNode list2) {
//定义一个虚拟结点,最后返回该结点的下一结点
ListNode node = new ListNode(-1);
//定义newHead指向node,使得已经排序的结点连接到newHead的后面,确保node结点保持不动
ListNode newHead = node;
while(list1 != null&&list2 != null){
if(list1.val <= list2.val){
newHead.next = list1;
newHead = list1;
list1 = list1.next;
}else{
newHead.next = list2;
newHead = list2;
list2 = list2.next;
}
}
//当list1链表遍历完之后,直接将list2链表连接到newHead结点之后
if(list1 == null){
newHead.next = list2;
}
if(list2 == null){
newHead.next = list1;
}
return node.next;
}