首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并2排序链表错误答案

合并2排序链表错误答案
EN

Stack Overflow用户
提问于 2019-12-10 05:38:27
回答 2查看 120关注 0票数 0

所以我正在做关于合并两个排序链表的hackerrank问题。这就是我的东西

代码语言:javascript
复制
    // Complete the mergeLists function below.

    /*
     * For your reference:
     *
     * SinglyLinkedListNode {
     *     int data;
     *     SinglyLinkedListNode next;
     * }
     *
     */
    static SinglyLinkedListNode mergeLists(SinglyLinkedListNode head1, SinglyLinkedListNode head2) {

        SinglyLinkedListNode curr1 = head1;
        SinglyLinkedListNode curr2 = head2;
        SinglyLinkedListNode head = new SinglyLinkedListNode(0);
        SinglyLinkedListNode curr = head;



        while(curr1.next != null && curr2.next != null){

            if(curr1.data < curr2.data ){

               curr.next = curr1;
               curr = curr.next;
               curr1 = curr1.next;


            }

            else{

                curr.next = curr2;
                curr=curr.next;
                curr2 = curr2.next;
            }

        }

        if (curr1.next == null ){
            curr.next = curr2;
        }


        head = head.next;
        return head;


    }

    private static final Scanner scanner = new Scanner(System.in);

然而,这是我得到的输出

1 2 3 4与

1 2 3 3 4

测试用例是

链表1: 1,2,3链表2: 3,4

EN

回答 2

Stack Overflow用户

发布于 2019-12-10 06:10:39

对于两个元素相等的情况,您缺少if子句。

代码语言:javascript
复制
        else if (curr1.data > curr2.data) {
            curr.next = curr2;
            curr = curr.next;
            curr2 = curr2.next;
        } else {
            // assign node from 2nd list
            curr.next = curr2;

            // increment 2nd list
            curr2 = curr2.next;
            curr = curr.next;

            // asign node from 1st list
            curr.next = curr1;

            // increment 1st list
            curr1 = curr1.next;
            curr = curr.next;
        } 
票数 0
EN

Stack Overflow用户

发布于 2019-12-10 08:30:52

当其中一个列表完成时,您需要将头部分配给剩余的列表。如果两个列表的大小不同,就会发生这种情况:

替换

代码语言:javascript
复制
if (curr1.next == null ){
    curr.next = curr2;
}

使用

代码语言:javascript
复制
if (curr1.next == null ){
    curr.next = curr2;
} else if (curr2.next == null ){
    curr.next = curr1;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59257051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档