将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
提示:
- 两个链表的节点数目范围是
[0, 50]
-100 <= Node.val <= 100
l1
和l2
均按 非递减顺序 排列
解:双指针
/**
* 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 node = new ListNode();
ListNode pre = node;
ListNode pointer_1 = list1, pointer_2 = list2;
while (pointer_1 != null && pointer_2 != null) {
if (pointer_1.val < pointer_2.val) {
node.next = pointer_1;
node = node.next;
pointer_1 = pointer_1.next;
} else {
node.next = pointer_2;
node = node.next;
pointer_2 = pointer_2.next;
}
}
while (pointer_1 != null) {
node.next = pointer_1;
node = node.next;
pointer_1 = pointer_1.next;
}
while (pointer_2 != null) {
node.next = pointer_2;
node = node.next;
pointer_2 = pointer_2.next;
}
return pre.next;
}
}