- Перебрать список и удалить следующий узел, если его значение соответствует текущему узлу.
2. Операцию удаления можно просто выполнить, установив следующий указатель на следующий указатель следующего узла.
Примечания:
- O(n) времени, O(1) пространства
- Обратите внимание, как мы можем избежать добавления отдельного условия для пустого списка.
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def deleteDuplicates(self, head): """ :type head: ListNode :rtype: ListNode """ p = head while p: while p.next and p.val == p.next.val: p.next = p.next.next p = p.next return head def deleteDuplicates(self, head): if not head: return None p = head while p.next: if p.val == p.next.val: p.next = p.next.next else: p = p.next return head