LeetCode 剑指Offer 18. 删除链表的节点 (JavaScript数据结构-链表)

   日期:2020-10-05     浏览:160    评论:0    
核心提示:题链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/利用双指针求解,第一个指向当前节点,第二个指向当前节点的上一个节点,找到要删除的节点,直接让第二个指针指向此节点的下一个节点即可。因为头节点也有可能被删除,所以要使用一个虚拟节点指向头节点,返回时只返回虚拟节点的下一个节点即可。/** * Definition for singly-linked list. * function ListNode

题链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/

利用双指针求解,第一个指向当前节点,第二个指向当前节点的上一个节点,找到要删除的节点,直接让第二个指针指向此节点的下一个节点即可。因为头节点也有可能被删除,所以要使用一个虚拟节点指向头节点,返回时只返回虚拟节点的下一个节点即可。



var deleteNode = function(head, val) {
    if (head == null) {
        return null;
    }
    //初始化一个虚拟节点
    let preNode = new ListNode(-1);
    //让虚拟节点指向头节点
    preNode.next = head;
    let resNode = preNode;
    //遍历链表
    while (head != null) {
        if (head.val == val) {
            //找到要删除的节点,便让此节点的前驱节点指向它的下一个节点
            preNode.next = head.next;
            break;
        }
        //没找到则往后移一步
        preNode = head;
        head = head.next;
    }
    //返回虚拟节点的下一个节点
    return resNode.next;
};

设链表有n个节点:

时间复杂度:O(n)

空间复杂度:O(1)

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服