LeetCode 19 删除链表的倒数第N个节点
LeetCode 19 删除链表的倒数第N个节点 题目跳转链接
class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* dummyHead=new ListNode(0); dummyHead->next=head; ListNode* fast=dummyHead; ListNode* slow=dummyHead; ListNode* temp; // for(int i=0;i<=n;i++) //这里是<=n 多走一次 // { // fast=fast->next; // } //这样写有报错,fast会为空 while(n--&&fast!=nullptr) { fast=fast->next; } fast=fast->next; //fast先走一步,相当于slow慢了一步,删掉slow前面的那个节点 while(fast!=nullptr) //最后一个的下一个 即最后一个的 fast->next 是不满足条件的 进不去 { fast=fast->next; slow=slow->next; } temp=slow->next; slow->next=slow->next->next; delete temp; return dummyHead->next; } };
分类:
数据结构与算法 / 链表