非递归
#Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def removeElements(self, head, val):
"""
:type head: ListNode
:type val: int
:rtype: ListNode
"""
if not head:
return None
first = ListNode(-1) # first 申请空间
first.next = head
p, q = first, head # p,q 为连在一起的指针 p的目的是连接下一个节点 q目的是判断是否为空 和 判断是否为val
while q:
if q.val ==val:
p.next = q.next
q = q.next
else:
q = q.next
p = p.next
return first.next
递归
#Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def removeElements(self, head, val):
"""
:type head: ListNode
:type val: int
:rtype: ListNode
"""
if not head:
return None
head.next = self.removeElements(head.next,val) #将该元素和后面所有元素分为两组递归
return head.next if head.val == val else head