将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
解决方法:
- 新建一个链表,将两链表比较后较小的值通过尾插法链接到新链表。
- 当中如果出现其中一个链表为空,另一个不为空的情况,那直接将不为空的链表直接链接到新链表。
出现的问题:
最后结果处写成了 :return head;结果错误,因为这样会多返回一个0,我认为是头指针节点默认值为0。我们合并的链表实则是从head.next开始的,不包括头节点。那么则要返回head.next;
代码部分:
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode head = new ListNode();
ListNode rear = head; //尾部指针
head.next = null;
while (list1 !=null && list2 != null) {
if(list1.val < list2.val) {
rear.next = list1;
list1 = list1.next;
} else {
rear.next = list2;
list2 = list2.next;
}
rear = rear.next;
}
//判断链表是否还有节点
if(list1 != null){
rear.next = list1;
}else if(list2 != null){
rear.next =list2;
}
return head.next;//head是自己定义的头指针,合并之后的链表的是从head.next开始。如果返回head,则会多返回一个0,它的值默认是0;
}
}