题解 | 从单向链表中删除指定值的节点

从单向链表中删除指定值的节点

https://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f

import sys

class ListNode:
    def __init__(self, value=0, next=None):
        self.value = value
        self.next = next

def construct_linked_list(n, head_value, pairs):
    # 创建头节点
    head = ListNode(head_value)
    current = head
    value_to_node = {head_value: head}
    
    # 根据二元组插入节点
    for a, b in pairs:
        new_node = ListNode(a)
        value_to_node[a] = new_node
        if b in value_to_node:
            node_b = value_to_node[b]
            new_node.next = node_b.next
            node_b.next = new_node
    
    return head

def delete_node(head, k):
    dummy = ListNode(0)
    dummy.next = head
    prev = dummy
    current = head
    
    while current:
        if current.value == k:
            prev.next = current.next
        else:
            prev = current
        current = current.next
    
    return dummy.next

def print_linked_list(head):
    current = head
    values = []
    while current:
        values.append(current.value)
        current = current.next
    print(" ".join(map(str, values)))

data=list(map(int,sys.stdin.readline().strip().split()))
n = data[0]
head_value = data[1]
pairs = [(data[2*i+2],data[2*i+3]) for i in range(n-1)]
k = data[-1]

# 构造链表
head = construct_linked_list(n, head_value, pairs)

# 删除值为 k 的节点
head = delete_node(head, k)

# 输出剩余的链表
print_linked_list(head)

全部评论

相关推荐

每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
面了这么多场试,总有公司总喜欢压力面一个小时面试+手撕,哪里不会就点哪里,说了不会不会还继续追着问不尊重求职者,稍微有些细节记不清了,就开始怀疑项目真实性以及人格让求职者开摄像头但是自己不开,说话声音还贼小,pardon几次就开始不耐烦的不知道这个算不算,手撕的时候,面试官人跑了。。。最后快结束才来
一纸丿繁华丶:你换位思考一下,自己在职场被领导push麻了,身心俱疲,现在有个机会让你放松一下,体验一把上位者的感觉,还能看着那些高学历人才、未来自己的竞争者,抓耳挠腮、手足无措的样子,没给你当场笑出来就不错了,理解一下面试官吧。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务