Сложность: medium
Учитывая заголовок связанного списка, удалите n-й узел из конца списка и верните его заголовок.
Пример:
Input: head = [1,2,3,4,5], n = 2
Output: [1,2,3,5]
👨💻 Алгоритм:
1⃣Определить длину списка, пройдясь по нему один раз.
2⃣Найти узел, предшествующий удаляемому, используя второй проход.
3⃣Изменить ссылки, чтобы удалить целевой узел.
😎 Решение:
class Solution {
function removeNthFromEnd($head, $n) {
$tamaño = 0;
$aux = $head;
while ($aux !== null) {
$aux = $aux->next;
$tamaño++;
}
if ($tamaño == 1) {
return null;
}
if ($tamaño == $n) {
return $head->next;
}
$aux = $head;
for ($i = 0; $i < $tamaño - $n - 1; $i++) {
$aux = $aux->next;
}
$aux->next = $aux->next->next;
return $head;
}
}Ставь 👍 и забирай 📚 Базу знаний