标签:
题目连接:https://leetcode.com/problems/remove-nth-node-from-end-of-list/
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
/*题意:删除链表中从最后一个结点向前的第n个结点 */
/**
*思路:1、两个指针,first和second,让first指针先走n步
* 2、接着两个指针同时向后移动,当first指向最后一个
* 结点时,second->next就是要删除的结点
*
*/
class Solution {
public:
ListNode *removeNthFromEnd(ListNode *head, int n) {
ListNode *root = new ListNode(0);//root为根结点
ListNode *second, *first;
root->next = head;
first = second = root;
for(int i = 0; i < n; i ++) { //first指针先走n步
first = first->next;
}
while(first->next != NULL) { //first指针已到链表尾部
first = first->next;
second = second->next;
}
second->next = second->next->next; //删除second->next结点
return root->next;
}
};
19:Remove Nth Node From End of List【两指针】【链表】
标签:
原文地址:http://www.cnblogs.com/jzmzy/p/4398975.html