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

题目 在O(1)时间删除链表结点

image-ec9d2633

思路分析

单链表不方便找前驱节点,所以我们不能按常规方法将该节点删除。

可以换一种思路,将下一个节点的值复制到当前节点,然后将下一个节点删除即可。

“借尸还魂”

代码实现

 /**

 * Definition for singly-linked list.

 * public class ListNode {

 *     int val;

 *     ListNode next;

 *     ListNode(int x) { val = x; }

 * }

 */

class Solution {

    public void deleteNode(ListNode node) {

        ListNode p=node.next;

        node.val=p.val;

        node.next=p.next;

    }

}

同类题型

视频讲解


项目分区导航反转链表 ⬅️ | 05-在O(1)时间删除链表结点 | ➡️ 配置git环境与项目创建