2.27RemoveNthNodeFromEndofList

来源:互联网 发布:java.util.base64 类 编辑:程序博客网 时间:2024/06/18 14:24

Note: Given n will always be valid. Try to do this in one pass.  Solution: head---back------front------>NULL | | ---> n <---- */   /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */

class Solution {public:    ListNode *removeNthFromEnd(ListNode *head, int n) {        ListNode dummy(0), *back = &dummy, *front = &dummy;        dummy.next = head;        while (n--) front = front->next;        while (front->next) {            front = front->next;            back = back->next;        }        ListNode *del = back->next;        back->next = del->next;        delete del;        return dummy.next;    }    ListNode *removeNthFromEnd_2(ListNode *head, int n) {        if(head==NULL) return head;        ListNode *slow = head, *fast = head;        while(n--) fast = fast->next;        if (fast == NULL) return head->next;        while(fast->next) {            fast = fast->next;            slow = slow->next;        }        slow->next = slow->next->next;        return head;    }};


0 0
原创粉丝点击