输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
限制:
0 <= 链表长度 <= 1000
注意:本题与主站 21 题相同:https://leetcode-cn.com/problems/merge-two-sorted-lists/
Related Topics
双指针合并,不如找两串珠子自己比划比划
这个问题之前给人家形象的比喻讲解过。
- 你拿两串珠子,分别按照题意标上有序递增的数字
- 另外你再拿一根线,把这两串珠子合并成一串,这时候你会怎么做呢?
- 当然是两个原串头上挑小的串起来呀!哪个小串哪个,另外一串没有了就整个串上就完了
代码
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode head = new ListNode();
ListNode cur = head;
while ( l1 != null || l2 != null ){
if (l1 == null || l2 == null){
cur.next = l1==null?l2:l1;
break;
}
if (l1.val < l2.val){
cur.next = l1;
l1 = l1.next;
}else{
cur.next = l2;
l2 = l2.next;
}
cur = cur.next;
}
return head.next;
}
}
如果本题能够很好理解了不妨再去试试23. 合并K个升序链表
题解JAVA 分治归并 其实挺简单的
发表评论