leetcode_链表 203.移除链表元素

203.移除链表元素

  • 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回新的头节点 。
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def removeElements(self, head, val):
        """
        :type head: Optional[ListNode]
        :type val: int
        :rtype: Optional[ListNode]
        """
        dummy = ListNode(-1)
        # 定义哑节点(dummy node),方便处理头节点被删除的情况
        dummy.next = head
        # 哑结点的指针指向head
        current = dummy
        # 创建一个current指针指向哑结点

        # 遍历链表
        while current.next:
            if current.next.val == val:
                # 若current所指的节点的下一个节点的元素值等于val
                current.next = current.next.next
                # 把current所指节点的next区域指向下下个节点
            else:
                # 继续向前
                current = current.next

        return dummy.next
  • 时间复杂度:O(n), n为链表长度, 需要遍历链表中的每一个节点
  • 空间复杂度:O(1)

你可能感兴趣的:(leetcode,链表,算法)