链表(六)----力扣(合并两个有序链表)
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
https://leetcode.com/problems/merge-two-sorted-lists
// 不要提交这个类
public static class ListNode {
public int val;
public ListNode next;
ListNode() {}
ListNode(int val) { this.val = val; }
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null || l2 == null) {
return l1 == null ? l2 : l1;
}
ListNode l = l1.val > l2.val ? l2 : l1;
ListNode s = l == l1 ? l2 : l1;
ListNode curL = l.next;
ListNode curS = s;
ListNode last = l;
while (curL != null && curS != null){
if (curL.val > curS.val){
last.next = curS;
curS = curS.next;
}else {
last.next = curL;
curL = curL.next;
}
last = last.next;
}
last.next = curL == null ? curS : curL;
return l;
}