美文网首页
面试题18.删除列表的结点_hn

面试题18.删除列表的结点_hn

作者: 1只特立独行的猪 | 来源:发表于2020-03-23 13:48 被阅读0次

题目描述

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

示例

示例 1:

输入: head = [4,5,1,9], val = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

示例2:

输入: head = [4,5,1,9], val = 1
输出: [4,5,9]
解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

说明:
题目保证链表中节点的值互不相同
若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点

解答方法

方法一:双指针法

思路

单向链表

  • 遍历链表,如果val为头节点直接返回head.next。
  • 若当前节点cur不为空且当前节点的值等于val,上一个节点pre的下一个指向当前待删除节点cur的下一个,实现删除目标节点。
  • 否则继续下一个节点。直至cur == null说明链表中没有val值的节点,返回原来的链表的头节点,删除失败。

代码

# 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
        if head.val == val:
            return head.next
        pre = head
        cur = head.next
        while cur:
            if cur.val == val:
                pre.next = cur.next
                return head
            else:
                pre = cur
                cur = cur.next
        return head

时间复杂度

空间复杂度

相关文章

  • 面试题18.删除列表的结点_hn

    题目描述 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题...

  • 剑指offer之(链表和栈)

    题目列表链表面试题06. 从尾到头打印链表面试题18. 删除链表的节点面试题22. 链表中倒数第k个节点面试题24...

  • 算法:链表

    237 删除链表中的节点先复制其他结点内容到当前结点,再删除其他结点,实现删除当前结点。 19 删除链表的倒数第N...

  • LeetCode 链表[L1]

    面试题18. 删除链表的节点 写法一:因为有可能会删掉链表的head节点,为了避免讨论这种情况,引入一个头节点(-...

  • python初学19.Python特色数据类型(列表)(下)

    删除列表中的元素 del操作可以删除整个列表或者列表的子列表 指定索引 0 删除元素: 删除列表的字列表: 删除整...

  • 链表-删除链表中重复的结点-java

    删除链表中重复的结点 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返...

  • JZ-056-删除链表中重复的结点

    删除链表中重复的结点 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返...

  • 在O(1)时间删除链表节点

    给定单向链表的头指针和一个结点指针,要求在O(1)时间内删除该结点。 删除结点分为三种情况 给定结点是头结点,则删...

  • 【剑指Offer学习】【面试题13 :在O(1)时间删除链表结点

    题目: 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 思路: 如果待删除结点是尾结点...

  • LeetCode 237 ——删除链表中的结点

    1. 题目 2. 解答 因为给定的只有一个待删除的结点指针,我们并不知道其前面结点,所以需要将待删除结点后面的结点...

网友评论

      本文标题:面试题18.删除列表的结点_hn

      本文链接:https://www.haomeiwen.com/subject/ruqwyhtx.html