83. Remove Duplicates from Sorted List

Easy (Dễ) Python 🔗 Xem trên LeetCode

📋 Đề Bài

Given the head of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well.

 

Example 1:

Input: head = [1,1,2]
Output: [1,2]

Example 2:

Input: head = [1,1,2,3,3]
Output: [1,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.

🧠 Thuật Toán & Kỹ Thuật

Linked List (Danh sách liên kết)
⏱️ Thời gian O(n)
💾 Không gian O(n)

💻 Lời Giải

Python 0083-remove-duplicates-from-sorted-list.py
# 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: Optional[ListNode]) -> Optional[ListNode]:
        if not head:
            return None
        
        flag = [False] * 301
        ans = ListNode(0)
        currNode = ans
        
        while head:
            if not flag[head.val]:
                currNode.next = ListNode(head.val)
                currNode = currNode.next
            flag[head.val] = True
            head = head.next
            
        return ans.next