当前位置: 首页 > 知识库问答 >
问题:

为什么此代码由于黑客排名上的超时而显示为已终止

詹高畅
2023-03-14

问题是-合并两个排序的链表。有关详细信息,请访问https://www.hackerrank.com/challenges/merge-two-sorted-linked-lists当我在网站上提交此内容时,它显示“因超时而终止”。请告诉我代码有什么问题,以及如何修复它。

Node MergeLists(Node headA, Node headB) {
 // This is a "method-only" submission. 
 // You only need to complete this method 
if(headA==null){
    return headB;
}else if(headB==null){
    return headA;
}else{
    Node h,t;
    if(headA.data>=headB.data){
        h=headB;
        t=h;
        h=h.next;
        headB=headB.next;
    }else{
        h=headA;
        t=h;
        h=h.next;
        headA=headA.next;
    }
    while(headA!=null && headB!=null){
        if(headA.data>=headB.data){
        h.next=headB;
        h=h.next;
        headB=headB.next;
    }else{
        h=headA;
        h=h.next;
        headA=headA.next;
    }
    }
    if(headB==null){
        h=headA;
    }
    return t;
}

}

共有1个答案

韶景曜
2023-03-14

代码似乎没有正确合并这两个列表,laune评论了大多数错误,加上 while() 循环中其他列表后面的代码需要修复(它应该遵循与 while() 循环中的 if 相同的逻辑)。发生超时可能不是因为您的代码花费的时间太长,而是因为对返回的合并列表的黑客合并后检查卡在一个循环中或遵循错误的引用。

尝试创建一个调用MergeLists函数的测试程序,以便对其进行调试。

为了避开Java没有指向指针的指针的限制,您可以使用一个虚拟节点来简化代码:

    Node t = new Node;
    Node h = t;
    // ... h.next = ... merge the lists while advancing h
    return t.next;
 类似资料:
  • 当我只为一些特定的测试用例运行代码时,我得到了一个“由于超时错误而终止”。即使我的代码为其他测试用例成功编译。有人能帮我吗? 链接-https://www.hackerrank.com/challenges/phone-book 问题陈述: 你会得到一本电话簿,里面有人们的名字和电话号码。之后,你会得到一些人的名字作为查询。对于每个查询,打印该人的电话号码。 输入格式: 第一行有一个整数,表示通讯

  • 这段代码在Hackerrank上的一些大输入上显示“Terminated due to timeout”(因超时而终止)错误,但在其余情况下仍能正常工作。请帮助我改进此代码。 约翰·沃森在整数数组上执行一个称为右圆旋转的操作。执行一次右圆旋转操作后,数组将从 转换为 。 Watson多次执行此操作。为了测试Sherlock识别旋转数组中特定位置的当前元素的能力,Watson请求查询,其中每个查询由

  • 大家好,请检查问题黑客排名问题陈述 这是我对上述问题的解决方案(链接) 当数组大小较大时,我的代码无法处理,例如数组中的17623个元素。 由于超时而终止 问题出在第二个for循环中,该循环遍历数组并给出数组中最大数字的索引。还有其他方法可以提高性能吗。

  • 我成功地解决了Hackerrank上的一个问题,它通过了所有测试用例,但我得到了一个错误,时间限制超过。我猜如果我优化我的代码,它会起作用,但我想不出任何方法来使我的代码更有效率。 问题是:对大小为n的数组进行左旋操作会将数组的每个元素向左移动1个单位。例如,如果在数组[1,2,3,4,5]上执行两次左旋转,则该数组将变为[3,4,1,2]。 给定一个由n个整数和一个数字d组成的数组,在数组上执行

  • 问题内容: 我有以下JavaScript代码: 我希望它应该输出以下输出: 但是,它打印以下内容: 为什么在第一次迭代后打印“未定义”?重要说明: 仅 当在JavaScript控制台中执行代码时,我 才会 看到这种行为。如果它是页面的一部分,则可以正常工作。 问题答案: 这是因为“ printCounter()”函数本身返回。那是控制台告诉您表达式的结果。 通过添加到末尾来更改“ printCou

  • 问题内容: 这是我的代码: 当运行它输出。我究竟做错了什么? 问题答案: 您正在调用一个没有隐式字符串表示形式的实际数组。 为了输出数组的内容,你可以使用,或功能或自定义输出,你可以使用,甚至是循环: