题目
将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的。
分析
创建一个新的链表,依次从两个链表中取出当前节点进行比较,小的放到新链表上。最后如果其中一个链表还有剩余,直接放到新链表的末尾。注意不要忘了判断链表为空的状态。
代码实现
import java
.util
.*
;
public class Solution {
public ListNode mergeTwoLists
(ListNode l1
, ListNode l2
) {
if(l1
==null
){
return l2
;
}
if(l2
==null
){
return l1
;
}
ListNode head
= new ListNode(0);
ListNode resultNode
= head
;
while(l1
!=null
&&l2
!=null
){
if(l1
.val
>l2
.val
){
head
.next
= l2
;
l2
= l2
.next
;
}else{
head
.next
= l1
;
l1
= l1
.next
;
}
head
= head
.next
;
}
head
.next
= (l1
== null
)?l2
:l1
;
return resultNode
.next
;
}
}
本题链接,传送门 思路比较简单,但还是要注重细节,在比较之前需要记录一下初始状态,最终返回的是初始结点的next节点。
有时候不是看到了希望再去坚持,而是坚持下去才能看到希望!