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

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

1、问题描述:
求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中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 None
        #如果是头结点
        if head.val == val:
            return head.next
        #如果是尾节点
        if ptemp.next == None:
            res.next = None
            return head
        #一般情况
        res.next = ptemp.next
        return head

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

发布了61 篇原创文章 · 获赞 10 · 访问量 2887

猜你喜欢

转载自blog.csdn.net/weixin_42042056/article/details/105759345