/**
* 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) {
return method_1(head,n);
}
ListNode* method_1(ListNode *node,int n){
//先遍历一遍,确定链表的长度
int length=0;
ListNode *head=node;
while(head!=nullptr){
length++;
head=head->next;
}
if(n==length)
{
return node->next;
}
//存一下头节点
head=node;
int index=length-n;
int pivot=1;
while(pivot!=index){
node=node->next;
pivot++;
}
// if()
node->next=node->next->next;
return head;
}
};
Leetcode 19题 删除链表的倒数第 N 个结点
于 2023-07-15 09:04:53 首次发布
该代码实现了一个C++类Solution,包含一个方法removeNthFromEnd,用于从单链表的末尾删除第n个节点。首先遍历链表计算其长度,然后再次遍历找到目标节点并更新其next指针,从而实现删除操作。如果n等于链表长度,则返回新的头节点。
摘要由CSDN通过智能技术生成