码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode-19 Remove Nth Node From End of List

时间:2016-11-20 18:41:44      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:rem   after   div   move   try   nod   bsp   list   pre   

#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

标签:rem   after   div   move   try   nod   bsp   list   pre   

原文地址:http://www.cnblogs.com/fengxw/p/6082835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!