psd模板免费下载网站,企业网站创建步,商业网站建设案例课程视屏下载,手机图片网站 模版题目来源#xff1a; leetcode题目#xff0c;网址#xff1a;19. 删除链表的倒数第 N 个结点 - 力扣#xff08;LeetCode#xff09;
解题思路#xff1a; 使用双指针找到倒数第 N1 个节点后删除链表的第 N 个节点即可。注意当 N 为链表长度时#xff0c;倒数第 N1 …题目来源 leetcode题目网址19. 删除链表的倒数第 N 个结点 - 力扣LeetCode
解题思路 使用双指针找到倒数第 N1 个节点后删除链表的第 N 个节点即可。注意当 N 为链表长度时倒数第 N1 个节点不存在head-next 即为所求。
解题代码
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* lastNPlusOnehead;ListNode* lastOnehead;for(int i0;in;i){lastOnelastOne-next;}if(lastOnenullptr){return head-next;}while(lastOne-next!nullptr){lastNPlusOnelastNPlusOne-next;lastOnelastOne-next;}lastNPlusOne-nextlastNPlusOne-next-next;return head; }
};
总结 官方题解新增了哑节点作为头节点以避免删除首个元素时的特殊判断。官方题解给出了三种解法。第一种是计算链表长度。两次遍历第一次获得链表长度第二次删除指定节点。第二种是栈将所有元素入栈后删去出栈时位于倒数第 N 个的节点。第三种是双指针。