写点什么

【LeetCode】删除链表中的节点 Java 题解

用户头像
HQ数字卡
关注
发布于: 刚刚

题目描述

请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。


题目数据保证需要删除的节点 不是末尾节点 。


示例 1:

输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9
示例 2:

输入:head = [4,5,1,9], node = 1输出:[4,5,9]解释:指定链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9
示例 3:
输入:head = [1,2,3,4], node = 3输出:[1,2,4]
示例 4:
输入:head = [0,1], node = 0输出:[1]
示例 5:
输入:head = [-3,5,-99], node = -3输出:[5,-99]
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码

思路分析

  • 今天的算法题目是链表处理题目,需要删除链表中某个节点。粗看题目,很容易有疑惑?为什么没有给出头节点?细看题目,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。

  • 从链表里删除一个节点 node 的最常见方法是修改之前节点的 next 指针,使其指向之后的节点。而当前给出的要删除的节点,我们只能将当前节点的值替换为它后面节点中的值。然后指向他后面的节点。

通过代码

/** * 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;       }}
复制代码

总结

  • 上述算法的时间复杂度是 O(1),空间复杂度是 O(1)

  • 今天的算法题目代码不难,难的思维的转化,链表是最常见的一维数据结构,容易考察代码的细节,我们可以多加练习,掌握好链表的应用。

  • 坚持算法每日一题,加油!

发布于: 刚刚阅读数: 2
用户头像

HQ数字卡

关注

还未添加个人签名 2019.09.29 加入

LeetCode,略懂后端的RD

评论

发布
暂无评论
【LeetCode】删除链表中的节点Java题解