【题目】
给你一个链表的头节点 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 <= k <= 50
【代码】
【Python】

# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
jilu=[]
t=head
while t:
if t.val != val:
jilu.append(t.val)
t=t.next
pre,t=head,head
if not jilu:
return None
for x in jilu:
t.val=x
pre=t
t=t.next
if pre.next:
pre.next=None
return head
【方法2】

# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
if not head:
return head
cur,rs,rear=head,None,None
while cur:
if cur.val!=val:
if not rs:
rs=cur
rear=rs
else:
rear.next=cur
rear=cur
cur=cur.next
if rear:
rear.next=None
return rs
【方法3】

class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
while head and head.val==val:
head=head.next
if not head:
return head
pre,cur=head,head.next
while cur:
if cur.val==val:
pre.next=cur.next
else:
pre=cur
cur=cur.next
return head
本文介绍了一种算法,用于从单链表中移除特定值的所有节点实例,并提供了三种实现方法,包括遍历链表记录有效值、直接修改链表连接及迭代处理。
1887

被折叠的 条评论
为什么被折叠?



