合并2个排序的链表

Sneha29

我是数据结构的新手,我正在尝试为链表编写一些问题。问题是合并 2 个排序的链表。我已经为它编写了以下代码,但是当我返回时。接下来从我的方法中,我只是获取合并链表的最后一个值,这是代码片段。我不知道我哪里出错了。

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode head = new ListNode();
        ListNode curr = head;
        while(l1 != null && l2 != null) {
            if(l1.val <= l2.val) {
                curr.next = l1;
                l1 = l1.next;
            }else {
                curr.next = l2;
                l2 = l2.next;
            }
        }
        if(l1 != null){
            curr.next = l1;}  
        else if(l2 != null){
            curr.next = l2;}
    return head.next;

}

潘舒·杜比

curr在向当前节点的下一个节点添加值后,您不会增加,所以真正发生的是您继续向当前节点的下一个节点添加值。

展示

1->5->6 列表 1

2->3 列表 2

head = new ListNode(); // dummyNode;
current = head; // i.e dummyNode

循环中发生了什么:

第一次迭代

虚拟节点 -> 1

(请注意您如何不将 dummyNode 增加到 1,因此在每次迭代中,下一个 dummyNodes 将被替换)

第二次迭代

虚拟节点 -> 2

第三次迭代

虚拟节点 -> 3

(等等 .....)

在所有迭代之后,你会留下

虚拟节点 -> 6

所以当你回来的时候你head.next会得到 6

对代码的更改:

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {

    ListNode head = new ListNode();
    ListNode curr = head;
    while(l1 != null && l2 != null) {
        if(l1.val <= l2.val) {
            curr.next = l1;
            l1 = l1.next;
        }else {
            curr.next = l2;
            l2 = l2.next;
        }
        curr = curr.next;
    }
    if(l1 != null){
        curr.next = l1;
        curr = curr.next;
    }  
    else if(l2 != null){
        curr.next = l2;
        curr = curr.next;
    }
    return head.next;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

合并2个排序的链表未得到所需的输出

合并两个排序的单链表

合并两个排序的链表

合并两个已排序的链表

合并两个已排序的链表

为什么此程序无法按排序顺序合并2个链表?

合并链表的排序太慢

在Python中合并两个排序的链表

Javascript-合并两个排序的链表的理解

合并两个排序的单链表[Bugged]

如何在python中合并两个排序的链表

合并两个已排序的链表后,新构造的链表末尾没有附加

我们如何组织链表递归关系来合并两个已排序的链表?

合并双链表上的排序

C ++合并排序的链表未对前两个索引进行排序

对具有2个或更多节点的链表进行排序

合并两个链表

为了以相反的顺序合并 2 个排序的链表,我得到 AttributeError 'NoneType' 对象对于某些测试用例没有属性 'next'。为什么

在Python中合并两个排序的链表时,“ NoneType”对象没有属性“ next”

创建一个接受链表作为输入的合并排序

错误:在 Python 中使用虚拟头技术合并两个已排序的链表

合并递归排序的链表未运行

单向链表上的合并排序

合并排序链表给出细分错误

算法:合并排序与链表缺少的项目

将排序的链表与头节点合并

分段错误链表合并排序

在python中合并两个排序的链表并返回一个新的linked_list而不改变任何一个输入链表

合并K个排序的链表,为什么复杂度为O(N * K * K),而不是O(N * K)