Вопрос - объединить два отсортированных связанных списка. Для получения дополнительной информации -visit https://www.hackerrank.com/challenges/merge-two-sorted-linked-lists Когда я отправляю это на сайт, он показывает «Завершение из-за таймаута». Пожалуйста, сообщите мне, что не так с кодом, и как его исправить.Почему этот код показывает завершение из-за тайм-аута на hackerrank.
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;
}
}
Можете ли вы объяснить словами, что ваш алгоритм пытается сделать? (более подробно, чем списки слияний) –
Операторы, устанавливающие h в h.next в инструкции if, где t в качестве главы списка результатов определены, являются неправильными. h указывает на узел, где ссылка на преемника должна быть установлена в следующем поле, но для первого узла это первый узел; только после этого он должен быть продвинут. Кроме того, последнее утверждение if выглядит неправильно; он должен содержать h.next с левой стороны и должен быть симметричным w.r.t. списки A и B. – laune
Спасибо, Луэна, я понял это. –