版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
力扣刷题(python)50天——第四十六天:删除链表中的节点
题目描述
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法
起初有点没看懂题,觉得给的变量是不是少了head,但是仔细琢磨了一下,又没什么问题,还是能做的,node就是我们要删除的节点。
解答
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
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
其实在这种方法之前,我使用
执行结果
提升:
看到一个更方便的方法:
node.val = node.next.val;
node.next = node.next.next;
该方法之前我也想过一种类似的,就是
node=node.next
但是这种方法并没有改变node前一个节点的指针位置,该指针任然指向原来的node
但调用了node.next之后,左边就不会新建一个变量来储存数据,而是直接修改node的指针,巧就巧在先把数值移了一位,再用该代码进行修改指针!