- 实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。
- 这个题的意思比较奇怪我读了好久才明白,大概的意思是你只能访问当前节点及其以后的节点,但是呢你需要把当前节点删除。
- 大家都知道链表删除节点是通过指向删除的也就是访问到当前节点之前的节点curNodepre,切换指向:b.next = b.next.next。由下图2可知。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201117205840525.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc1MTI4NQ==,size_16,color_FFFFFF,t_70#pic_center)
- 但是题意只让访问当前节点及其之后的节点不让访问之前的节点。那么我们只能够将当前节点c的值修改和下一个节点d的值样这样我们也可以达到上述3的效果。
- c.val = d.val, c.next = c.next.next。
- leetcode源码:
这里的输入node我理解的是一个ListNode点 只是那个该删除的点。
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