一、问题描述
找到单链表倒数第n个节点,保证链表中节点的最少数量为n。
样例
给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.
方法跟删除链表中倒数第n个节点类似,要用一个前指针一个后指针,前指针先走,当间隔n-1个节点时再一起走,当前指针的下一个节点为空时后指针指向的节点即为倒数第n个节点,返回倒数第n个节点即可。
三、我的代码
class Solution {
public:
/**
* @param head: The first node of linked list.
* @param n: An integer.
* @return: Nth to last node of a singly linked list.
*/
ListNode *nthToLast(ListNode *head, int n) {
if(head==NULL||n<=0)
{
return NULL;
}
ListNode *front=head;
ListNode *behind=head;
for(int i=0;i<n-1;i++)
{
front=front->next;
}
while(front->next!=NULL)
{
front=front->next;
behind=behind->next;
}
return behind;
}
};
四、我的感想
掌握一种方法可以做很多类似的题,感觉很开心,当然以后也要多做多练才可以学会更多的方法。