Description

Given a sorted linked list, delete all duplicates such that each element appear only once.

Example 1:

Input: 1->1->2
Output: 1->2

Example 2:

Input: 1->1->2->3->3
Output: 1->2->3

Solutions

1. Direct

# Time: O(n)
# Space: O(1)
# Definition for singly-linked list.
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def deleteDuplicates(self, head: ListNode) -> ListNode:
        node = head
        while node:
            if node.next and node.next.val == node.val:
                node.next = node.next.next
                continue
            node = node.next
        return head

# 165/165 cases passed (32 ms)
# Your runtime beats 97.89 % of python3 submissions
# Your memory usage beats 100 % of python3 submissions (12.8 MB)

References

  1. 83. Remove Duplicates from Sorted List