LeetCode——删除链表的节点(JS实现) |刷题打卡

126 阅读1分钟

前言

掘金团队号上线,助你 Offer 临门! 点击 查看详情

题目描述

解题思路

  • 参数的head指的是链表的头指针。
  • val指的是目标number
  • 首先判断要删除的是不是第一个头节点,如果是头节点,直接让头指针指向下一个节点,然后返回。
  • 如果不是头节点,首先使用临时指针记录这个头指针的位置,让临时指针往后遍历,头指针不要移动了。
  • 使用while循环进行遍历,当临时指针的next节点的值等于要删除的节点,那么让临时指针的next指向临时指针的next的next。
  • 因为head指向的是引用型变量,临时指针修改也会影响到head的,所以最后返回head即是我们要返回的头指针。

解题代码

var deleteNode = function (head, val) {
    // 这里的head指的不是链表,而是链表的头指针
    // 如果删除的是头节点的话,直接返回头节点的下一个节点
    if(head.val === val) {
        return head.next;
    };
    // 如果函数走到这里说明删除的不是头节点
    // 用临时变量记录头指针
    let node = head;
    while(node.next.val !== val) {
        node = node.next;
    }
    node.next = node.next.next;
    return head;
};

总结

  • 本题属于链表的考题。
  • 本题核心思路在于复制目标节点的值,然后指针跳过该节点。