说明:删除链表的倒数第 N 个结点
本文首要先容一道口试中常考链表删除相干的标题,即 leetcode 19. 删除链表的倒数第 N 个结点。回收 双指针 + 动图 的方法举办分解,供各人参考,但愿对各人有所辅佐。 删除链表的倒数第 N 个结点给你一个链表,删除链表的倒数第 n 个结点,而且返回链表的头结点。 进阶:你能实行行使一趟扫描实现吗? 解题思绪在链表中要删除某个节点 nodeB,必需先找到 nodeB 的前一节点 nodeA ,再将 nodeA 指向 nodeB 的下一节点 nodeC ,从而实现节点 nodeB 的删除。 譬喻要删除链表 L(1->2->3->4->5) 中 值为 3 的节点,起首得找到该节点的前一节点(值为 2 的节点),才气实现该节点的删除,如下图示: 标题要求删除 倒数第 n 个 节点,以是起首得找到 该节点的前一节点 ,但因为不知道 整个链表的长度,因此不知道 待删除的节点是正数的第几个节点,以是很难从新节点开始遍历时删除去这个节点。 思绪一 先遍历一遍链表,获取整个链表的长度;假设整个链表的长度为 l,则可知要删除的节点为第 l - n + 1 个节点;再遍历一遍,删除倒数第 n 个节点。譬喻链表 L 为 1->2->3->4->5,n = 3,则要删除的节点为 第 5 - 3 + 1 = 3 个节点 。 思绪二 尽量思绪一可行,可是必要 遍历链表两遍,不足简捷,并且标题标 进阶 中也提到实行行使一趟扫描实现,因此本文回收 双指针 的计策,实现通过一次扫描删除 倒数第 n 个节点 。 在上一期链表相干专题 假造头节点秒杀链表题目 中提到 增进假造头节点 的计策办理链表题目,增进假造头节点的 甜头 在于:不必要单独思量头节点,这样仇家节点的处理赏罚就像跟其余节点一样。本文也同样回收这种计策。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |