力扣刷题(python)50天——第四十六天:删除链表中的节点

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44568780/article/details/100797955

力扣刷题(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的指针,巧就巧在先把数值移了一位,再用该代码进行修改指针!

猜你喜欢

转载自blog.csdn.net/weixin_44568780/article/details/100797955
今日推荐