java-合并两个有序链表

关键词:有序。
1.创建一个新链表用来存储合并后的链表。
2.设置两个指针,依次从两个链表的头部开始遍历,比较两指针所指向的节点的数值大小,将小的数值放在创建好的新链表中。
3.哪个指针的数值被放到了新链表中,哪个指针向后移动,另一个指针不动。
4.更新后的指针继续进行比较并持续更新。
5.假如有一方的数值已经被遍历完了,则将另一方的数组依次放进新链表中,数值之间的相对位置不变。

class Solution14_ {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode prehead = new ListNode(-1);

        ListNode prev = prehead;
        while (l1 != null && l2 != null) {
            if (l1.val <= l2.val) {
                prev.next = l1;
                l1 = l1.next;
            } else {
                prev.next = l2;
                l2 = l2.next;
            }
            prev = prev.next;
        }

        // 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
        prev.next = l1 == null ? l2 : l1;

        return prehead.next;
    }
}




版权声明:本文为lhyyayayaya原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。