天天看点

力扣237.删除链表中的节点(java)题目思路代码

力扣237.删除链表中的节点

  • 题目
  • 思路
  • 代码

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;
    }
}