剑指Offer-18-删除链表的节点

2020-10-27  本文已影响0人  阿凯被注册了

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
注意:此题对比原题有改动

image.png

解题思路:

  1. 同题https://leetcode-cn.com/problems/remove-linked-list-elements/submissions/
  2. 单指针遍历,判断当前指针p的next是否存在,若存在则判断是否与待删除val相等,若相等则多跳一步;
  3. head的值就为val,则返回处理完后的head.next

Python3代码:

# 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:
        if not head: return head           
        p = head
        while p.next:
            if p.next.val==val:
                p.next = p.next.next
            else:
                p = p.next
        if head.val == val:
            head =  head.next
        return head
上一篇 下一篇

猜你喜欢

热点阅读