临沂网站开发,沪指重上3000点,南京软件外包公司排名,wordpress极速版19.删除链表的倒数第N个节点
力扣题目链接(opens new window)
给你一个链表#xff0c;删除链表的倒数第 n 个结点#xff0c;并且返回链表的头结点。
进阶#xff1a;你能尝试使用一趟扫描实现吗#xff1f;
示例 1#xff1a; 输入#xff1a;head [1,2,3,4,5], n…19.删除链表的倒数第N个节点
力扣题目链接(opens new window)
给你一个链表删除链表的倒数第 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] //双指针 /*** 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*dummyNode new ListNode(0);dummyNode-next head;//设置虚拟头节点ListNode * pdummyNode;ListNode * q p;//q,p均指向虚拟头节点while(n--){//p先走n步pp-next;}while(p-next!NULL){//p,q一起走p p-next;q q-next;}//跳出循环后q-next指的就是要删除的结点q-next q-next-next;//删除指定节点return dummyNode-next;}
};