原题描述:
删除链表中等于给定值val的所有节点。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。
题目分析:
删除链表中等于给定值val的所有节点。
遍历链表,找到其中next.val等于val的节点,删除。
注意的地方就是可能链表中的所有元素val都等于val,循环的开始需要从表头开始删除,需要新增一个头节点。
源码:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# @param head, a ListNode
# @param val, an integer
# @return a ListNode
def removeElements(self, head, val):
# Write your code here
if head is None:
return None
# 可能链表中的所有元素val都等于val,所以需要新增一个头节点
new = ListNode(0)
new.next = head
head = new
pre = head
# 遍历链表,删除等于val的所有节点
while pre.next is not None:
if pre.next.val == val:
pre.next = pre.next.next
else:
pre = pre.next
return new.next