给你一个链表,删除链表的倒数第 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]
直接在对应的位置进行链表的操作
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
if(head==nullptr){
return head;
}
ListNode *pre = nullptr;
ListNode *saveHead = head;
int len = GetListLen(head);
int i = 0;
while(head!=nullptr){
if(n ==len){
if(pre==nullptr){
return head->next;
}
if(head==nullptr){
pre->next = nullptr;
}else{
pre->next = head->next;
}
break;
}
len--;
pre = head;
head = head->next;
}
return saveHead;
}
int GetListLen(ListNode* head){
int len = 0;
while(head!=nullptr){
len++;
head = head->next;
}
return len;
}
};