思路:
- 创建一个新列表,new一个新节点。
- 将两个节点依次挂到新列表后面,直到有一个列表为空。
- 另一个不为空的列表可以直接插入到新列表的最后面。
- 返回去掉头节点的新列表
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode i = list1, j = list2,res,h;
//创建一个头节点,之后排好序的元素一个一个插入在后面
res = h =new ListNode();
//只要有一个列表为空了,后面的就不要判断了
while (i != null && j != null) {
if (i.val > j.val) {
res.next = j;
j= j.next;
}else{
res.next = i;
i = i.next;
}
res = res.next;
}
//当另一个列表为空,那么另一个列表就可以直接放后面了
if(i!=null){
res.next = i;
}
if(j != null){
res.next = j;
}
//头节点无用,仅需返回头节点后面的元素
return h.next;
}
}