leetcode21
题目
代码
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2){
if(list1 == null || list2 == null){
return list1 == null ? list2 : list1;
}
ListNode head = list1.val <= list2.val ? list1 : list2;
ListNode cur1 = head.next;
ListNode cur2 = head == list1 ? list2 : list1;//举例子感受
ListNode pre = head;//存放排好的节点
//接下来的过程只要三个 cur1 cur2 pre
while (cur1 != null && cur2 != null) {
if (cur1.val <= cur2.val) {
pre.next = cur1;
cur1 = cur1.next;
} else {
pre.next = cur2;
cur2 = cur2.next;
}
pre = pre.next; // 移动 pre 到下一个待连接的节点
}
pre.next = cur1 != null ?cur1 : cur2;//运行到中间已经有一个为null的话
return head;
}
}