牛客-剑指offer系列题解:删除链表的节点

记录刷题的过程。牛客和力扣中都有相关题目,此篇博客是力扣的题目描述。该系列默认采用python语言。

1、问题描述:
牛客-剑指offer系列题解:删除链表的节点_第1张图片

2、数据结构:
链表

3、题解:
双指针

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def deleteNode(self, head: ListNode, val: int) -> ListNode:
        ptemp = head#所要删除的节点的指针
        res = ptemp#是所要删除的上一个节点的指针
        #找也许存在的结点
        while ptemp and ptemp.val != val:
            res = ptemp
            ptemp = ptemp.next
        #如果循环到None停止,即没找到节点,则直接返回原来的链表
        if ptemp == None:
            return head
        #如果是头结点
        if head.val == val:
            return head.next
      #一般情况
        res.next = ptemp.next
        return head

4、复杂度分析:
时间复杂度:O(N)
空间复杂度:O(1)

你可能感兴趣的:(牛客-剑指offer系列题解)