本题主要考查了代码编写能力以及对链表基础知识的掌握情况,难点在于对边界情况的判定,需要我们在编写代码时仔细考量各种情况,具体代码如下:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode r,list = new ListNode();
if(list1 == null && list2 == null){
return null;
}
if(list1 == null){
r = list2;
list = r;
list2 = list2.next;
}else if(list2 == null){
r = list1;
list = r;
list1 = list1.next;
}else{
if(list1.val <= list2.val){
r = list1;
list = r;
list1 = list1.next;
}else{
r = list2;
list = r;
list2 = list2.next;
}
}
while(list1 != null && list2 != null){
if(list1.val <= list2.val){
r.next = list1;
list1 = list1.next;
r = r.next;
}else{
r.next = list2;
list2 = list2.next;
r = r.next;
}
}
if(list1 != null){
r.next = list1;
}
if(list2 != null){
r.next = list2;
}
return list;
}
}