83. Remove Duplicates from Sorted List
Дана голова отсортированного связного списка. Удалите все дубликаты таким образом, чтобы каждый элемент появлялся только один раз. Верните также отсортированный связный список.
Пример:
Input: head = [1,1,2]
Output: [1,2]
C# решение
сопоставлено/оригиналpublic class Solution {
public ListNode DeleteDuplicates(ListNode head) {
ListNode current = head;
while (current != null && current.next != null) {
if (current.next.val == current.val) {
current.next = current.next.next;
} else {
current = current.next;
}
}
return head;
}
}
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 ListNode DeleteDuplicates(ListNode head) {
ListNode current = head;
while (current != null && current.next != null) {
if (current.next.val == current.val) {
current.next = current.next.next;
} else {
current = current.next;
}
}
return head;
}
}
Java решение
сопоставлено/оригиналclass Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode current = head;
while (current != null && current.next != null) {
if (current.next.val == current.val) {
current.next = current.next.next;
} else {
current = current.next;
}
}
return head;
}
}
JavaScript решение
сопоставлено/оригиналvar deleteDuplicates = function (head) {
let current = head;
while (current !== null && current.next !== null) {
if (current.next.val === current.val) {
current.next = current.next.next;
} else {
current = current.next;
}
}
return head;
};
Python решение
сопоставлено/оригиналclass Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
current = head
while current is not None and current.next is not None:
if current.next.val == current.val:
current.next = current.next.next
else:
current = current.next
return head
Go решение
сопоставлено/оригиналfunc deleteDuplicates(head *ListNode) *ListNode {
current := head
for current != nil && current.Next != nil {
if current.Next.Val == current.Val {
current.Next = current.Next.Next
} else {
current = current.Next
}
}
return head
}
Algorithm
1️⃣
Это простая задача, которая проверяет вашу способность манипулировать указателями узлов списка. Поскольку входной список отсортирован, мы можем определить, является ли узел дубликатом, сравнив его значение с значением следующего узла в списке.
2️⃣
Если узел является дубликатом, мы изменяем указатель next текущего узла так, чтобы он пропускал следующий узел и напрямую указывал на узел, следующий за следующим.
3️⃣
Это позволяет исключить дубликаты из списка, продвигаясь вперёд по списку и корректируя связи между узлами для сохранения только уникальных элементов.
😎
Вакансии для этой задачи
Показаны активные вакансии с пересечением по тегам задачи.