remove-nth-node-from-end-of-list

来源:互联网 发布:sd卡数据恢复软件 编辑:程序博客网 时间:2024/06/17 18:43

题目:

Given a linked list, remove the n th node from the end of list and return its head.
For example,
Given linked list: 1->2->3->4->5, and n = 2.

After removing the second node from the end, the linked list becomes 1->2->3->5.
Note:
Given n will always be valid.
Try to do this in one pass.

程序:

class Solution {public:    ListNode *removeNthFromEnd(ListNode *head, int n) {        if(head == NULL){            return head;        }        ListNode* dummy = new ListNode(0);        dummy->next = head;        head = dummy;        ListNode* slow = head;        ListNode* fast = head;        for(int i = 0; i <n; i++){            fast = fast ->next;        }        while(fast->next != NULL){            fast = fast->next;            slow = slow->next;        }        ListNode* temp = slow->next;        slow ->next = slow->next->next;        delete temp;        return dummy->next;    }};

点评:

链表常用方法,前后指针