Задача: Реверсивно реверсировать релятивистский список.Обратный список ссылок рекурсивно, почему это неправильно
Я знаю, как решить эту проблему, но один из моих рекурсивных методов неверен, я не могу понять, что не так с этим кодом. Может ли кто-нибудь это понять? Большое спасибо!
Тестовый пример: Input: [1,2,3] Выход: [3,1] Ожидаемое: [3,2,1]
public class Solution {
// recursive
ListNode last = null;
public ListNode reverseList(ListNode head) {
if (head == null) return null;
helper(head);
return last;
}
private ListNode helper(ListNode head) {
// base case
if (head.next == null) {
last = head;
return head;
}
// general case
ListNode prev = reverseList(head.next); // should be ListNode prev = helper(head.next);
prev.next = head;
head.next = null;
return head;
}
}
Было бы полезно добавить тег для используемого вами языка программирования. – fvu
Использование «глобального» (последнего) в возвращающей функции обычно является плохим знаком. –
Другим плохим знаком является то, что вы возвращаете что-то из метода 'helper', который не используется в' reverseList' ... – Renzo