企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# O(1)时间内删除链表节点 **题目** 给定单向链表的头指针head和一个节点指针p,定义一个函数在O(1)时间删除该节点p。 * * * **思路** 1. 如果要删除的是头结点,则直接返回头结点的下一个结点 2. 如果要删除的是尾结点,那么必须循环了 3. 如果要删除的是中间的结点,那么不用循环,进行值和指针的改变覆盖即可 ``` function deleteNode(head, node) { // 头结点 if (head === node) { head = head.next return head } if (node.next !== null) { node.val = node.next.val node.next = node.next.next return head } else { let current = head while (current) { if (!current.next.next) { current.next = null break } else { current = current.next } } return head } } ```