LeetCode题解之删除中间节点

删除中间节点

题目描述

实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。

示例:

输入:单向链表a->b->c->d->e->f中的节点c
结果:不返回任何数据,但该链表变为a->b->d->e->f

解题思路

因为只能访问要删除的节点,因此可以考虑使用伪删除来实现节点的删除:将该节点下一个节点的值赋给该节点,然后删除下一节点即可。

复杂度分析

  • 时间复杂度:O(1)。
  • 空间复杂度:O(1)。

代码实现

/**
 * 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 next = node.next;
        node.val = next.val;
        node.next = next.next;
    }
}

你可能感兴趣的:(LeetCode题解之删除中间节点)