237. Delete Node in a Linked List

LeetCode medium оригинал: C# #csharp #leetcode #linked-list #medium

Дан односвязный список с головой head, и требуется удалить узел node в этом списке.

Вам дан узел node, который нужно удалить. У вас нет доступа к первому узлу head.

Все значения в односвязном списке уникальны, и гарантируется, что данный узел node не является последним узлом в списке.

Удалите данный узел. Обратите внимание, что под удалением узла мы не подразумеваем его удаление из памяти. Мы имеем в виду:

- Значение данного узла не должно существовать в односвязном списке.

- Количество узлов в односвязном списке должно уменьшиться на один.

- Все значения перед узлом должны оставаться в том же порядке.

- Все значения после узла должны оставаться в том же порядке.

Пример

Input: head = [4,5,1,9], node = 5

Output: [4,1,9]

Explanation: You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function.

C# решение

сопоставлено/оригинал
public class Solution {
    public void DeleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }
}

C++ решение

auto-draft, проверить перед отправкой
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public void DeleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }
}

Java решение

сопоставлено/оригинал
class Solution {
    public void deleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }
}

JavaScript решение

сопоставлено/оригинал
class Solution {
    deleteNode(node) {
        node.val = node.next.val
        node.next = node.next.next
    }
}

Python решение

сопоставлено/оригинал
class Solution:
    def deleteNode(self, node: ListNode) -> None:
        node.val = node.next.val
        node.next = node.next.next

Go решение

сопоставлено/оригинал
func deleteNode(node *ListNode) {
    node.Val = node.Next.Val
    node.Next = node.Next.Next
}

Algorithm

Копирование данных: Скопируйте значение из следующего узла (

node.next

) в текущий узел (node). Таким образом, текущий узел будет иметь значение, которое было в следующем узле.

Обновление указателя: Обновите указатель next текущего узла, чтобы он ссылался на узел, следующий за узлом

node.next

. Это effectively удалит следующий узел из списка.

Удаление ссылки на следующий узел: Убедитесь, что следующий узел больше не ссылается на другие узлы, тем самым полностью исключая его из списка.

😎

Вакансии для этой задачи

Показаны активные вакансии с пересечением по тегам задачи.

Все вакансии
Активных вакансий пока нет.