题目描述
本题与一般的删除链表节点不太一样,一般删除链表节点都是给定头节点,和要删除的节点,而本题只给要删除的节点。
如原始节点为:2—>5—>4—>7—>9,删除节点为5,也就是要删除第2个节点。
满足条件:
1、要删除节点一定不是尾节点。
2、链表中至少包含2个节点。
3、链表中节点的值都是唯一的。
4、删除节点不强制要求删除节点所在的内存地址。
本题难点在于,因为是单向链表,所以如果不给定头节点,也就意味着无法找到当前节点的前一个节点,所以需要转换思路,根据条件提示,其实我们只需要替换值即可,最终代码如下:
public void deleteNode(ListNode node) {
node.val = node.next.val;
node.next = node.next.next;
}