https://leetcode.com/problems/delete-node-in-a-linked-list
这道题和常规的删除linked list中某个node不同,这里要删除linked list中一个指定的node,但是只告诉你这个node的地址,而不告诉你这个linked list的head地址,从而无法获取这个node之前的地址。常规办法无法实施,只能work around。思路在代码的注释里。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public void deleteNode(ListNode node) {
// 由于单向链表无法获取之前的node的地址,常规方法走不通
// work around的办法是:
// 1. 先将这个node的val改为next node的val,变的和走一个node一样
// 2. 再将后一个next node删掉
// 所以实际删除的是后一个node,而不是参数传入的哪个node,但是结果是差不多的
node.val = node.next.val;
node.next = node.next.next;
}
}