美文网首页
删除链表中的节点

删除链表中的节点

作者: 灰化肥发黑会挥发 | 来源:发表于2018-12-25 15:52 被阅读0次

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

给定了头指定和节点指针,删除节点指针,要求时间为O(1),如果按照先查找当前节点的前面节点,再删除该节点,需要O(n)的时间复杂度。假设将后一个节点的值复制到当前节点,然后当前节点.next = 当前节点.next.next,也相当于删除了节点,但需要注意的是当前节点可能为最后一个节点,当前节点为第一个节点,需要边界值处理。

public class DELETENODE {
    public ListNode DeleteNode(ListNode head,ListNode toBeDeleted){
        //首先判断输入是否合法
        if(head==null||toBeDeleted==null)
            return null;
        //当删除节点不是尾节点时候
        if(toBeDeleted.next!=null){
            toBeDeleted.val = toBeDeleted.next.val;
            toBeDeleted.next = toBeDeleted.next.next;
            return head;
        }
        //假设链表中只有一个节点
        else if(toBeDeleted==head){
            return null;
        }
        else{
            ListNode node = head;
            while(node.next!=toBeDeleted){
                node = node.next;
            }
            node.next= null;
        }
        return head;
    }
}
```
需要注意的是上述代码假定toBeDeleted在链表中,这种情况没有考虑到。

相关文章

  • 数据结构与算法之链表面试题(四)

    目录 删除链表中的节点反转一个链表递归实现迭代(非递归)实现 一 删除链表中的节点 237. 删除链表中的节点 说...

  • 18-删除链表节点、删除链表重复节点

    1. 删除链表节点 2. 删除链表中的重复节点 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没...

  • leecode刷题(20)-- 删除链表中的节点

    leecode刷题(20)-- 删除链表中的节点 删除链表中的节点 描述: 请编写一个函数,使其可以删除某个链表中...

  • 算法相关笔记,持续更新中...

    单链表 1.删除单链表中的指定节点: 2.单链表中删除指定数值的节点方法一:利用栈 3.单链表中删除指定数值的节点...

  • 删除链表中重复的节点

    删除链表中重复的节点在一个排序的链表中,如何删除重复的节点?

  • 链表删除--二级指针

    教科书上的链表删除节点 也可以这样(leveldb中LRUCache链表使用的该方法删除节点)

  • 1.单链表常用操作

    1.删除单链表中的指定节点 2.删除单链表中指定值的节点 (1). 利用栈删除单链表指定值的节点 (2). 用普通...

  • Leetcode总结 -- 链表

    目录 链表的基本操作 改/遍历:while(?) 查: 返回倒数K个节点 增/删除:反转链表,删除链表中的重复节点...

  • 237. Delete Node in a Linked Lis

    删除链表中的节点,用于删除单链表中某个特定节点。在设计函数时需要注意,无法访问链表头节点head,只能直接访问要被...

  • leetcode探索初级算法之链表

    1. 删除链表中的节点 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。...

网友评论

      本文标题:删除链表中的节点

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