您的位置:首页 > Web前端 > Node.js

LeetCode: Remove Nth Node From End of List

2014-09-15 10:52 281 查看

题目

https://oj.leetcode.com/problems/remove-nth-node-from-end-of-list/

分析

1. 两个指针, 第一个指针先走n步, 然后两个指针一起走, 直到第一个指针走到结尾处, 此时第二个指针即为要删除的结点的上一个结点。

2. 特别要注意的一点是, 如果要删除的结点是第一个结点, 要特别的处理一下, 因为第二个指针无法指向第一个结点的上一个结点。

代码

class Solution
{
public:
ListNode *removeNthFromEnd(ListNode *head, int n)
{
ListNode *l, *r;

l = head;
r = head;
for (int i = 0; i < n; i++)
r = r->next;

if (r == NULL)
{
ListNode *t = head;
head = head->next;
delete t;
}
else
{
while (r->next != NULL)
{
l = l->next;
r = r->next;
}
ListNode *t = l->next;
l->next = t->next;
delete(t);
}
return head;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 算法 面试