目录
(二):技巧设立一个哑结点,让它的 next 指针指向链表的头节点。
题目要求
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
示例 1:
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:输入:head = [1], n = 1
输出:[]
示例 3:输入:head = [1,2], n = 1
输出:[1]
提示:
链表中结点的数目为 sz
1 <= sz <= 30
0 <= Node.val <= 100
1 <= n <= sz来源:力扣(LeetCode)
很显然是一个 “链表” 的题目,关于链表,我之前一篇讲“哈希表”的时候曾讲过。其实就是一个数组。这一题的思路很好理解,下面我们就开始讲解吧。
题目理解以及思路分析
题目理解:
这一题最终目的其实就是删除链表的倒数第 n 个结点,并返回链表的头结点。这样讲可能很多人仍然理解不了,说白了我们把链表当作一个一维数组,也就是说,我们找到这个数字倒数第 n 个数,将它删除,然后输出一个新的数组。就是这么简单。
题目理解了,那怎么具体的操作呢?,下面我们来一步一步的进行思路分析。
思路分析:
(一):找到“数组”(也就是链表)的长度 length
这一点很重要,我们只有找了其长度 length 我们才能找到倒数第 n 个数具体在哪?那问题来了,怎么知道给出的链表的长度呢?我的答案是遍历,从