Remove Nth Node From End of List --移除链表中的倒数第k个元素

来源:互联网 发布:知乎华为软件开发面试 编辑:程序博客网 时间:2024/06/12 11:22

问题:链接

Given a linked list, remove the nth 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.
解答:

注意如果移除的元素是头元素的话,需要特别的处理,否则的话直接找到倒数第n+1个元素,移除它后面的元素即可。

代码:

class Solution {public:    ListNode *removeNthFromEnd(ListNode *head, int n) {        int len=0;        ListNode *pf = head;        while(pf != NULL)        {            ++len;            pf = pf->next;        }        if(len == n)            return head->next;        pf = head;        ListNode *pl = head;        for(int i = 1; i <= n && pf->next != NULL; i++)            pf = pf->next;        while(pf->next != NULL)        {            pf = pf->next;            pl = pl->next;        }        pl->next = pl->next->next;        return head;    }};



0 0
原创粉丝点击