题目描述很坑
给出要删除的node,将其删除(在这里是5)
方法一
开始想到用 1 来代替 5,即5的节点和值全都变成1的
然后用 9 来代替 1 的位置,依次循环,最后将最后一个删除
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteNode(self, node):
"""
:type node: ListNode
:rtype: void Do not return anything, modify node in-place instead.
"""
while node.next.next:
node.val = node.next.val
node = node.next
node.val = node.next.val
node.next = None
方法二
事实证明,不用那么麻烦
直接把 1 的值赋给 5 ,然后把 5 的next变成1的next。就相当于把 5 变成 1 ,然后把 1 删掉
为什么不直接删掉5,而要删掉1呢
要删掉一个节点,要把上一个节点的next指向被删除节点的下一个,而题目直接给出了该节点
所以我们用了 李代桃僵 之策
class Solution:
def deleteNode(self, node):
"""
:type node: ListNode
:rtype: void Do not return anything, modify node in-place instead.
"""
node.val = node.next.val
node.next = node.next.next