题目
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:
0 <= 链表长度 <= 1000
解题思路
1.题目要求我们合并两个链表并使新链表中的节点仍然是递增排序的。
2.首先我们设置一个虚拟头节点merge,让 temp 指向 merge
然后比较l1和l2指向元素的大小将小的元素先入队,若相等时将l2指向的元素先入栈
然后将指针指向被入队元素的下一个元素(此处的l2就指向了 1 的下一个元素 3)
这时l2已经指向null 了,我们只需要将还没有入队的l1中的元素接在 temp 后面即可。
代码实现
class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode merge = new ListNode(0);ListNode temp = merge;while(l1 != null && l2 != null ){if(l1.val < l2.val){temp.next = l1;l1 = l1.next;}else{temp.next = l2;l2 = l2.next;}temp = temp.next;}temp.next = l1 == null ? l2 : l1;return merge.next;}
}