0082-remove-duplicates-from-sorted-list-ii¶
Try it on leetcode
Description¶
You are given the head of a sorted linked list.
Delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
Return the linked list sorted as well.
Example 1:
Input: head = [1,2,3,3,4,4,5] Output: [1,2,5]
Example 2:
Input: head = [1,1,1,2,3] Output: [2,3]
Constraints:
- The number of nodes in the list is in the range
[0, 300]. -100 <= Node.val <= 100- The list is guaranteed to be sorted in ascending order.
Solution(Python)¶
# Definition for singly-linked list.
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def deleteDuplicates(self, head: ListNode | None) -> ListNode | None:
#
sentinel = ListNode(0)
sentinel.next = head
cur = head
prev = sentinel
while cur:
if cur.next and cur.val == cur.next.val:
while cur.next and cur.val == cur.next.val:
cur =cur.next
prev.next = cur.next
else:
prev = prev.next
cur = cur.next
return sentinel.next