/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @param n int整型
* @return ListNode类
*/
ListNode* removeNthFromEnd(ListNode* head, int n) {
// write code here
//要删除倒数第n个结点先找到倒数第n+1个结点,为了方便运算增加头结点
ListNode* virtualHead=new ListNode(*head);
virtualHead->next=head;
ListNode* p1=virtualHead,* p2=virtualHead->next;//p2多移动一步,因为是找倒数n+1
while(n!=0&&p2!=nullptr)
{
--n;
p2=p2->next;
}
while(p2!=nullptr)
{
p2=p2->next;
p1=p1->next;
}
ListNode* temp=p1->next;
p1->next=temp->next;
return virtualHead->next;
}
};
原理同返回倒数第n个结点
不过,删除倒数第n个结点需要先找到倒数第n+1个结点



京公网安备 11010502036488号