题目:
找到单链表倒数第n个节点,保证链表中节点的最少数量为n。
给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.
这道题是那道删除链表倒数第n个结点的简化版,这个不用删除,直接返回就可以,代码如下。
代码:
/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
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) {
// write your code here
if(n==0||head==NULL)
return NULL;
ListNode *temp=head;
while(n>0)
{temp=temp->next;
n--;
}
//ListNode *p=head;
while(temp!=NULL)
{ temp=temp->next;
head=head->next;
}
return head;
}
};
感想:
我是先做的那道删除链表倒数第n个结点的题,所以这个题就简单了,直接复制过来,去掉删除操作就过了。