题目描述
思路:
对于单链表a->b->c->d,如果要求我们删除一个节点 b ,常用的做法就是从头遍历链表找到要被删除的节点 b ,期间记录该结点的上一个节点 a ,将 a 的指针指向 c 即可解决问题。
但是本题只能访问要被删除的节点,所以按照常规的思路无法解题。那么我们就要想通过这个要被删除的节点我们能知道什么?显然,我们只能访问它与它之后的节点,所以我们就要从这里入手。紧接着,既然我们无法得到它上一个节点,那么我们就不找了,让它成为它的下一个节点,并让它下一个节点消失不就好了嘛?
class Solution {
public void deleteNode(ListNode node) {
//先改变值,再改变指针域
node.val = node.next.val;
node.next = node.next.next;
}
}
本题思想:
如何让自己从这个世界上消失,但又不死呢?很简单,将自己完全变成另一个人,再把那个人“sha”了就行了。