用python刷LeetCode DAY 7
题目:203.移除链表元素
题目要求:
一道很简单的链表题,只需遍历元素,将链表中元素值等于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: ListNode
:type val: int
:rtype: ListNode
"""
dummy_head = ListNode(next=head) # 创建一个只有一个节点的单链表,让该节点指向head作为虚拟头部节点
current = dummy_head
while current.next != None: # 循环查找链表
if current.next.val == val:
current.next = current.next.next # 如果找到值为val的节点a,则让a节点的上一个节点指向a结点的下一个节点
else:
current = current.next # 否则更新current
return dummy_head.next
因为链表删除元素过程中需要遍历链表,所以时间复杂度为O(n)