美文网首页
JZ-069-在 O(1) 时间内删除链表节点

JZ-069-在 O(1) 时间内删除链表节点

作者: 醉舞经阁半卷书 | 来源:发表于2022-02-23 19:35 被阅读0次

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

题目描述

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

方案:如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。

题目链接: 在 O(1) 时间内删除链表节点

代码

/**
 * 在 O(1) 时间内删除链表节点
 */
public class Jz69 {

    /**
     * 方案:
     * 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。
     * 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。
     *
     * @param head
     * @param tobeDelete
     * @return
     */
    public ListNode deleteNode(ListNode head, ListNode tobeDelete) {
        if (head == null || tobeDelete == null) {
            return null;
        }
        if (tobeDelete.next != null) {
            // 要删除的节点不是尾结点
            ListNode next = tobeDelete.next;
            tobeDelete.val = next.val;
            tobeDelete.next = next.next;
        } else {
            if (head == tobeDelete) {
                // 只有一个节点
                head = null;
            } else {
                ListNode cur = head;
                while (cur.next != tobeDelete) {
                    cur = cur.next;
                }
                cur.next = null;
            }
        }

        return head;
    }

    public static void main(String[] args) {
    
    }
}

【每日寄语】 窦燕山,有义方;教五子,名俱扬。

相关文章

  • JZ-069-在 O(1) 时间内删除链表节点

    在 O(1) 时间内删除链表节点 题目描述 在 O(1) 时间内删除链表节点。方案:如果该节点不是尾节点,那么可以...

  • 剑指Offer Java版 面试题18:删除链表的节点

    题目一:在O(1)时间内删除链表节点。给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。...

  • 面试题18:删除链表的节点

    题目:在O(1)时间内删除链表节点。给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点,链...

  • 删除链表中的节点

    在O(1)时间内删除链表节点。给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。 给定了...

  • 剑指offer - 删除链表的节点

    题一 在O(1)时间内删除链表节点。给定单链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。 链...

  • 删除链表的节点——jzoffer

    题目一:在O(1)时间内删除链表的节点给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点,...

  • 面试题 18:删除链表的节点

    题目一:在O(1)时间内删除链表的节点,给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点...

  • 面试题18-删除列表中的节点

    题目要求 在O(1)的时间内删除链表节点给定单向链表的头和一个节点指针,定义的函数在O(1)内删除该节点。 题目解...

  • 剑指offer(第二版)题目分类整理

    链表 ~~~6. 从尾到头打印链表 ###18.1 在 O(1) 时间内删除链表节点 需要分情况,是否是尾节点...

  • 18_删除链表中重复的节点

    题目1:在O(1)的时间内删除链表的节点题目2:删除链表中重复的节点要求1:给定单向链表的头指针和一个节点指针,定...

网友评论

      本文标题:JZ-069-在 O(1) 时间内删除链表节点

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