203
. Remove Linked List Elements
Для заданного начала связного списка и целого числа val удалите все узлы связного списка, у которых Node.val равно val, и return новое начало списка.
Exemplo:
Input: head = [1,2,6,3,4,5,6], val = 6
Output: [1,2,3,4,5]
C# solução
correspondente/originalpublic class ListNode {
public int val;
public ListNode next;
public ListNode(int val = 0, ListNode next = null) {
this.val = val;
this.next = next;
}
}
public class Solution {
public ListNode DeleteNode(ListNode head, int value) {
ListNode sentinel = new ListNode(0);
sentinel.next = head;
ListNode prev = sentinel, curr = head;
while (curr != null) {
if (curr.val == value) {
prev.next = curr.next;
} else {
prev = curr;
}
curr = curr.next;
}
return sentinel.next;
}
}
C++ solução
rascunho automático, revisar antes de enviar#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
public class ListNode {
public int val;
public ListNode next;
public ListNode(int val = 0, ListNode next = null) {
this.val = val;
this.next = next;
}
}
class Solution {
public:
public ListNode DeleteNode(ListNode head, int value) {
ListNode sentinel = new ListNode(0);
sentinel.next = head;
ListNode prev = sentinel, curr = head;
while (curr != null) {
if (curr.val == value) {
prev.next = curr.next;
} else {
prev = curr;
}
curr = curr.next;
}
return sentinel.next;
}
}
Java solução
rascunho automático, revisar antes de enviarimport java.util.*;
import java.math.*;
// Auto-generated Java draft from the C# solution. Review API differences before LeetCode submit.
public class ListNode {
public int val;
public ListNode next;
public ListNode(int val = 0, ListNode next = null) {
this.val = val;
this.next = next;
}
}
public class Solution {
public ListNode DeleteNode(ListNode head, int value) {
ListNode sentinel = new ListNode(0);
sentinel.next = head;
ListNode prev = sentinel, curr = head;
while (curr != null) {
if (curr.val == value) {
prev.next = curr.next;
} else {
prev = curr;
}
curr = curr.next;
}
return sentinel.next;
}
}
Algorithm
1️⃣
Инициализируйте сторожевой узел как ListNode(0) и установите его новым началом:
sentinel.next
= head. Инициализируйте два указателя для отслеживания текущего узла и его предшественника: curr и prev.
2️⃣
Пока curr не является нулевым указателем, сравните значение текущего узла со значением для удаления. Если значения равны, удалите текущий узел:
prev.next
=
curr.next
, иначе установите предшественника равным текущему узлу. Переместитесь к следующему узлу: curr =
curr.next
.
3️⃣
return
sentinel.next
.
😎
Vacancies for this task
vagas ativas with overlapping task tags are mostradas.