难度:Medium
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?
双指针,
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/class Solution {public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* root=head;ListNode* fast=head;while(n--)fast=fast->next;if(!fast) return root->next;while(fast->next){root=root->next;fast=fast->next;}root->next=root->next->next;;return head;}};
执行用时 :8 ms, 在所有 C++ 提交中击败了45.95%的用户 内存消耗 :6.5 MB, 在所有 C++ 提交中击败了100.00%的用户