LeetCode笔记汇总
题目
实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。
示例:
输入:单向链表a->b->c->d->e->f中的节点c
结果:不返回任何数据,但该链表变为a->b->d->e->f
思路
本题的最大难度在于理解题目的意思。
题目中传入的是要删除的节点,而不是常见的头节点,因此不能用常见的"目标节点的上一个节点指向目标节点的下一个节点"的方式删除。
本题中我们假设有 A-B-C-D四个节点,要删除的节点是B,我们可以先令将C节点的值赋给B,再将B的下一个节点指向D,这样就相当于删除了C节点,但是C中的数据在B中保存了下来,等效于删除了B节点
代码
/**
* 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.val = node.next.val;
node.next=node.next.next;
}
}