用python语言解答LeetCode的237题
方法一:狸猫换太子大法
这道题颇有点脑筋急转弯的感觉。
题目给定链表中的一个节点,要求删除这个节点。
常规题解法应该是找到该结点的前一个节点,然后将前一个节点的指针直接指向该节点的下一个节点,这样就可以删除节点啦。
但是这道题传参的时候并没有传入链表头指针,没办法找到它的前一个节点诶。
官方题解给了一个 很巧妙的解法:
我们把打算删除的这个节点的值替换为它后面节点的值,然后删除后一个节点。
emmm…感觉后一个结点做了替死鬼
方法一代码:
#coding:utf-8
# 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.
"""
node.val = node.next.val
node.next = node.next.next