剑指 Offer 18. 删除链表的节点

剑指 Offer 18. 删除链表的节点

一开始还以为是那题,给定了结点,删除该节点的题目,但是后来发现两题有些不同,那题说明了要删除的节点一定不是尾节点,而这里没有保证,所以使用双指针即可。
pre值要删除节点的前一个节点,cur指向要删除的节点。找到要删除的节点后,将前一个节点的next指针指向要删除节点的下一个即可。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode deleteNode(ListNode head, int val) {
        ListNode dummy = new ListNode(-1);
        dummy.next = head;
        ListNode pre = dummy, cur = head;
        while(cur.val != val) {
            pre = cur;
            cur = cur.next;
        }
        pre.next = cur.next;
        return dummy.next;
    }
}
posted @   NullPointer_C  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示