剑指offer13题-在O(1)时间内删除链表节点
1、输入是val: ListNode 解法
# 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: ListNode) -> ListNode: if not (head and val): return False if val.next != None: tmp = val.next val.value = tmp.value val.next = tmp.next elif head == val: head = None else: node = head while node.next!=val: node = node.next node.next = None return head
2、输入是 val: int 解法
class Solution: def deleteNode(self, head: ListNode, val: int) -> ListNode: dummy = ListNode(0) # 设置伪结点 dummy.next = head if head.val == val: return head.next # 头结点是要删除的点,直接返回 while head and head.next: if head.next.val == val: # 找到了要删除的结点,删除 head.next = head.next.next head = head.next # 找到了之后为什么还要移动一个 return dummy.next
下一篇:
docker导入镜像时候遇到微坑