Leetcode-19 Remove Nth Node From End of List

Posted 北冥有鱼,南冥有猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode-19 Remove Nth Node From End of List相关的知识,希望对你有一定的参考价值。

#19.    Remove Nth Node From End of List

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.

Note: Given n will always be valid. Try to do this in one pass.

题解:关键点在于把倒数第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) {
        if(n==0)
        {
            return head;
        }
        int cnt=0;
        ListNode* p=head;
        ListNode* ret=head;
        while(p!=NULL)
        {
            cnt++;
            p=p->next;
        }
        
        int pos=cnt-n-1;
        if(pos<0)
        {
            return head->next;
        }
        
        while(pos>0)
        {
            head=head->next;
            pos--;
        }
        head->next=head->next->next;
        return ret;
    }
};

 

以上是关于Leetcode-19 Remove Nth Node From End of List的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode19. Remove Nth Node From End of List

leetcode 19. Remove Nth Node From End of List

LeetCode 19. Remove Nth Node From End of List

[LeetCode] 19. Remove Nth Node From End of List

Leetcode 19. Remove Nth Node From End of List(python)

LeetCode(19) - Remove Nth Node From End of List