Q:
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5
链接:https://leetcode-cn.com/problems/remove-linked-list-elements/description/
思路:
代码:
# 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
"""
h = ListNode(-1) # head
h.next = head
cur = h
while cur.next:
delNode = cur.next
if delNode.val == val:
cur.next = delNode.next
else:
cur = cur.next
return h.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 []
tmp = []
while head:
tmp.append(head)
head = head.next
tmp2 = []
for i in range(len(tmp)):
if tmp[i].val != val:
tmp2.append(tmp[i])
if tmp2:
head_ = point = tmp2.pop(0)
point.next = None
while tmp2:
point.next = tmp2.pop(0)
point = point.next
point.next = None
return head_
else:
return []