美文网首页
LeetCode题解之删除中间节点

LeetCode题解之删除中间节点

作者: l1fe1 | 来源:发表于2020-07-03 13:27 被阅读0次

删除中间节点

题目描述

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

示例:

输入:单向链表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题解之删除中间节点

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