题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
思路
(1)根据题意,两个链表都是递增的,所以只需要从头到尾依次比较两个链表的元素,再按序放入新链表中即可
(2)具体做法:
①若其中一个个链表为空,直接返回另一个链表;
②创建一个新链表newHead用于存放排序后的元素,由于,创建一个空链表,在加入新元素时,还要分情况讨论,所以直接创建一个非空结点,返回时,返回头结点的next即可
③创建一个节点tail用于指向新链表的末尾
④在两个原始链表非空的情况下,比较两个链表元素的大小,按顺序放入新链表中,更新原始链表和新链表的位置
⑤任意一个原始链表指向null,结束循环,此时再将非空的原始链表连接到新链表末尾即可
⑥返回newHead.next
代码
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode A,ListNode B) {
if(A == null){
return B;
}
if(B == null){
return A;
}
ListNode newHead = new ListNode(0);
ListNode tail = newHead;
while(A!=null&&B!=null){
if(A.val>B.val){
tail.next = B;
B = B.next;
}else{
tail.next = A;
A = A.next;
}
tail = tail.next;
}
if(A == null){
tail.next = B;
}
if(B == null){
tail.next = A;
}
return newHead.next;
}
}