LeetCode 19. Remove Nth Node From End of List

来源:互联网 发布:行知中学官网 编辑:程序博客网 时间:2024/04/28 08:31

用prev, slow, fast三个指针实现。

prev为slow的前一个指针,fast为slow的后n个指针。

当fast为NULL时,slow即为倒数第n个,此时将其删去即可;我的程序需要特判prev为NULL, 即slow为head的情况。


代码:

class Solution {public:    ListNode *removeNthFromEnd(ListNode *head, int n)     {    ListNode* slow = head, *fast = head, *prev = NULL;    for (int i = 0; i<n; ++ i, fast=fast->next) {}    while (fast != NULL){    prev = slow;slow = slow->next;fast = fast->next;}// note that we didn't delete the n-th node hereif (prev != NULL){    prev->next = slow->next;} else{    head = head->next;}return head;    }};


0 0
原创粉丝点击