今日感受:👊👊
题目描述:
请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。
题目数据保证需要删除的节点 不是末尾节点 。
解题代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public void deleteNode(ListNode node) {
// 可以叫冒名顶替hahaha...
node.val = node.next.val;
node.next = node.next.next;
}
}
提交结果:
解题思路:
(1)由于题目要求
在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。
所以采用的是复制下一个节点的值,然后删除下一个节点。相当于冒名顶替然后灭口😂。
(2)替换流程如下
(3)传入的是要删除的节点,将要删除的节点的值修改为其下一个节点的值
node.val = node.next.val;
(4)然后将其下一个指向它的下一个的下一个
node.next = node.next.next;
小结:
链表操作画一下图,感觉会清晰很多。然后所有的解题思路是看b站上 北大大佬的题解直播录像,他用的C++实现,我自己理解然后重新用java语言进行实现。他的视频很赞,视频指路👉 LeetCode暑期刷题打卡2019—Week2 链表专题_哔哩哔哩_bilibili