文章目录
- 题目
- 代码及注释
- 关键点
题目
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
示例 1:
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
示例 2:
输入:head = [], val = 1
输出:[]
示例 3:
输入:head = [7,7,7,7], val = 7
输出:[]
提示:
列表中的节点数目在范围 [0, 104] 内
1 <= Node.val <= 50
0 <= val <= 50
代码及注释
# 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(0) #在链表前新建一个节点dummy.next = head #新建节点的next设为head,便于删除后返回pre = dummy #再设置一个pre节点,设在head之间,所以初始化为dummywhile (head != None ): #判断节点是否为空if(head.val == val): #如果节点的值为目标值pre.next = head.next #前节点移到现节点的下一个点head = head.next #现节点后移else :pre = head #如果节点不为目标值,前节点变为现节点head = head.next #现节点后移return dummy.next #返回head即dummy.next
关键点
1.dummy临时节点的设置
2.prd节点的设置